Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button 谷歌脚本自动检测包含按钮的单元格,并更改该单元格的背景?_Button_Google Apps Script_Google Sheets_Colors - Fatal编程技术网

Button 谷歌脚本自动检测包含按钮的单元格,并更改该单元格的背景?

Button 谷歌脚本自动检测包含按钮的单元格,并更改该单元格的背景?,button,google-apps-script,google-sheets,colors,Button,Google Apps Script,Google Sheets,Colors,我是一名教师,致力于创建一个危险风格的游戏,在我的课堂上使用。一般来说,我对谷歌脚本和编码非常陌生。我正在使用透明图像为每个类别中的点值创建“按钮”,并附加脚本,以便在单击时将单元格的背景颜色更改为灰色,以指示哪些点值已被使用,如中所示 我想做的是能够为每个“按钮”分配相同的精确脚本,这样它将根据按下的按钮自动检测哪个单元格变为灰色。我还没有弄明白这一点,而是为每个按钮创建了一个单独的脚本(类别1,100分;类别2,100分;类别3,100分,等等)。这既复杂又耗时,而且似乎必须有更好的方法

我是一名教师,致力于创建一个危险风格的游戏,在我的课堂上使用。一般来说,我对谷歌脚本和编码非常陌生。我正在使用透明图像为每个类别中的点值创建“按钮”,并附加脚本,以便在单击时将单元格的背景颜色更改为灰色,以指示哪些点值已被使用,如中所示

我想做的是能够为每个“按钮”分配相同的精确脚本,这样它将根据按下的按钮自动检测哪个单元格变为灰色。我还没有弄明白这一点,而是为每个按钮创建了一个单独的脚本(类别1,100分;类别2,100分;类别3,100分,等等)。这既复杂又耗时,而且似乎必须有更好的方法

 function colorCat1100(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var colors = [
   ["#e0e0e0"]
 ];

  var cell = sheet.getRange("A3:A3");
 cell.setBackgrounds(colors);
}

function colorCat2100(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var colors = [
   ["#e0e0e0"]
 ];

  var cell = sheet.getRange("B3:B3");
 cell.setBackgrounds(colors);
}

function colorCat3100(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var colors = [
   ["#e0e0e0"]
 ];

  var cell = sheet.getRange("C3:C3");
 cell.setBackgrounds(colors);
}

function colorCat4100(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var colors = [
   ["#e0e0e0"]
 ];

  var cell = sheet.getRange("D3:D3");
 cell.setBackgrounds(colors);
}

function colorCat5100(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 var colors = [
   ["#e0e0e0"]
 ];

  var cell = sheet.getRange("E3:E3");
 cell.setBackgrounds(colors);
}
…这只是点值的第一行。我将非常感谢你们这些优秀的人可能提供的任何帮助!提前谢谢

问题: 可以将图像插入到工作表中:(1)属于单元格(
Insert>Image>Image-in-cell
,或使用),并且脚本无法附加到该工作表中,或者(2)不属于特定单元格(
Insert>Image>Image-over-cells
),脚本可以附加到该工作表中

假设在单元格上使用
图像
,则无法将参数传递给附加到图像的函数。考虑到通过单元格上方的图像插入的图像不属于特定的单元格,调用函数无法获取通过或单击的图像的信息

解决方法:onSelectionChange触发器: 由于最近添加了触发器,您可以将单元格本身用作“按钮”:您可以在单击单元格时运行脚本,而不是将脚本附加到单元格图像上的

其思想是,当选择的单元格发生更改时,脚本将运行并检查当前选择的单元格是否是带有“按钮”的单元格之一(需要此条件以避免所有单元格在单击时更改背景,而仅更改“按钮”单元格)。如果是的话,手机背景就会改变

只需复制并粘贴以下代码:

选择更改功能(e){
var buttonRanges=[“A3”、“B3”、“C3”];//带“buttons”的单元格(请更改)
var范围=e范围;
if(按钮ranges.includes(range.getA1Notation())){
范围.立根点(#e0”);
}
}
当然,您可以将图像本身添加到单元格中,但不应在单元格上使用
图像
,而应通过
单元格中的图像
或使用
=图像
添加内嵌单元格

注:
  • 在该函数的开头,定义了带按钮的单元格的A1符号。在提供的示例中,这些单元格是
    A3
    B3
    C3
    。请根据您的喜好进行更改
  • 如果单击的单元格不是以前选择的单元格(此触发器仅跟踪单元格选择的更改),则此操作将不起作用
参考:

问题: 可以将图像插入到工作表中:(1)属于单元格(
Insert>Image>Image-in-cell
,或使用),并且脚本无法附加到该工作表中,或者(2)不属于特定单元格(
Insert>Image>Image-over-cells
),脚本可以附加到该工作表中

假设在单元格上使用
图像
,则无法将参数传递给附加到图像的函数。考虑到通过单元格上方的图像插入的图像不属于特定的单元格,调用函数无法获取通过或单击的图像的信息

解决方法:onSelectionChange触发器: 由于最近添加了触发器,您可以将单元格本身用作“按钮”:您可以在单击单元格时运行脚本,而不是将脚本附加到单元格图像上的

其思想是,当选择的单元格发生更改时,脚本将运行并检查当前选择的单元格是否是带有“按钮”的单元格之一(需要此条件以避免所有单元格在单击时更改背景,而仅更改“按钮”单元格)。如果是的话,手机背景就会改变

只需复制并粘贴以下代码:

选择更改功能(e){
var buttonRanges=[“A3”、“B3”、“C3”];//带“buttons”的单元格(请更改)
var范围=e范围;
if(按钮ranges.includes(range.getA1Notation())){
范围.立根点(#e0”);
}
}
当然,您可以将图像本身添加到单元格中,但不应在单元格上使用
图像
,而应通过
单元格中的图像
或使用
=图像
添加内嵌单元格

注:
  • 在该函数的开头,定义了带按钮的单元格的A1符号。在提供的示例中,这些单元格是
    A3
    B3
    C3
    。请根据您的喜好进行更改
  • 如果单击的单元格不是以前选择的单元格(此触发器仅跟踪单元格选择的更改),则此操作将不起作用
参考:

此线程对您的情况有用吗?这可能是另一个选择:这个版本是免费的:这是另一个给老师的:这个线程对你的情况有用吗?这可能是另一种选择:这个版本是免费的:这是另一个供教师使用的版本: