Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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
Javascript 如何使触发器脚本在谷歌工作表中工作?_Javascript_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Javascript 如何使触发器脚本在谷歌工作表中工作?

Javascript 如何使触发器脚本在谷歌工作表中工作?,javascript,google-apps-script,google-sheets,triggers,Javascript,Google Apps Script,Google Sheets,Triggers,我的目的是每次在工作表上选择任何内容时,在特定单元格上生成一个随机数。那么我应该怎么做才能使下面的代码正常工作呢 /** * The event handler triggered when the selection changes in the spreadsheet. * @param {Event} e The onSelectionChange event. */ function onSelectionChange(e) { // Set background to red

我的目的是每次在工作表上选择任何内容时,在特定单元格上生成一个随机数。那么我应该怎么做才能使下面的代码正常工作呢

/**
 * The event handler triggered when the selection changes in the spreadsheet.
 * @param {Event} e The onSelectionChange event.
 */
function onSelectionChange(e) {
  // Set background to red if a single empty cell is selected.
  var range = e.range;
  if(range.getNumRows() === 1 
      && range.getNumColumns() === 1 
      && range.getCell(1, 1).getValue() === "") {
      range.set(RAND());
  }
}
当我执行上面的代码时,我得到了如下错误
TypeError:cannotreadproperty'range'of undefined(第7行,file“triggers”)

这是我第一次在工作表中使用脚本工具

这个答案怎么样

修改点:
  • onSelectionChange
    是简单触发器的功能。而
    onSelectionChange(e)
    e
    是事件触发器。触发事件时,
    e
    具有该值。因此,从您的错误消息
    无法读取未定义的属性“range”
    ,我认为您可以在脚本编辑器中直接运行函数
    onSelectionChange
    。在这种情况下,不提供事件对象。这样,就会出现这样的错误
  • 在脚本中,有一个修改点。我认为
    range.set(RAND())可能是
    range.setValue(RAND())
  • 我认为
    range.getCell(1,1).getValue()==“
    可以修改为
    range.isBlank()
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
  • 为了运行此功能,请将上述脚本复制粘贴到电子表格的脚本编辑器中,并保存脚本。请在电子表格中选择一个单元格。这样,
    onSelectionChange
    由简单触发器运行
  • 在这个修改中,它假设函数
    RAND()
    工作
参考资料:
补充: 如果要在选定单元格时将
RAND()
的值放入单元格“A1”,那么下面的脚本如何

示例脚本: 样本情况: 作为示例情况,使用此脚本时,可以看到以下结果

function onSelectionChange(e) {
  e.range.getSheet().getRange("A1").setValue(Math.random());
}

第1行第1列应该是A1,对吗?我保存了脚本并返回工作表,但当我尝试随机选择任何内容时,A1仍然不变,没有任何更改。我不确定脚本是否正在运行。@Ahiung-Lim感谢您的回复。我为我糟糕的英语水平道歉。我在回答中又添加了一个脚本。你能确认一下吗?当选定单元格时,该脚本将
RAND()
的值放入单元格“A1”。嗯,奇怪,不起作用。我是否必须以某种方式将脚本连接到相关的表单,比如插件?似乎脚本根本没有运行。你的英语非常好,我更喜欢基础英语而不是学者级英语。对不起,忘记了勾选解决方案按钮,因为我正在写另一个问题。哈哈,顺便说一句,塔奈克,你帮了大忙。谢谢你。
function onSelectionChange(e) {
  e.range.getSheet().getRange("A1").setValue(RAND());
}
function onSelectionChange(e) {
  e.range.getSheet().getRange("A1").setValue(Math.random());
}