当数据发送到工作表而不是手动输入时,OnChange脚本不起作用

时间:2017-10-23 20:45:46

标签: google-apps-script google-sheets

我有一张表(电子表格b),使用脚本生成的提交按钮从源表(电子表格a)发送数据。

电子表格b使用此代码将此数据自动复制到另一个电子表格(电子表格c):

function onChange() {

var sourceSpreadsheet = 
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Albany");
var sourceData = sourceSpreadsheet.getRange("A1:E39").getValues();
var targetSpreadsheet = SpreadsheetApp.openById("1NRhJ-
g6s8i05XVsAZDepJlWTB1zLuiKwS7zxp66QWJE").getSheetByName("Albany");

targetSpreadsheet.getRange("A1:E39").setValues(sourceData);
}

如果对电子表格b进行了物理编辑,则此代码有效,但是当使用提交按钮将数据从电子表格a发送到电子表格b时,此代码无效。我怎样才能让它发挥作用?

(注意:我似乎没有电子表格直接转到电子表格c,因为使用电子表格的编辑器不会与电子表格c共享。)

我无法使用importrange函数,因为可能必须对电子表格c上的数据进行编辑。

2 个答案:

答案 0 :(得分:0)

这些是onChange检测到的唯一更改类型: EDIT,INSERT_ROW,INSERT_COLUMN,REMOVE_ROW,REMOVE_COLUMN,INSERT_GRID,REMOVE_GRID,FORMAT Link

也许您可以将当前操作包装到提交按钮运行的原始函数中。

答案 1 :(得分:0)

简短回答

包括按钮调用的脚本上的所有操作。

解释

来自https://developers.google.com/apps-script/guides/triggers/events

  

各种Google表格特定的触发器可让脚本在电子表格中响应用户的操作

以上意味着脚本所做的更改不会触发onchange事件。