我的脚本应该根据单元格中的值从一个Google电子表格移动到另一个。它没有这样做,我认为这是因为onEdit()函数,但无法弄明白。我在同一个电子表格中找到了不同工作表的解决方案,但没有在不同的电子表格中找到。我的代码如下。
function onEdit(e) {
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = e.source.getActiveSheet();
var r = e.source.getActiveRange();
if(s.getName() == "source_sheet" && r.getColumn() == 7 && r.getValue() == "Pavlovo"){
//Get full range of data
var SRange = ss.getRange(1, 3, 1, 5);
//get A1 notation identifying the range
var A1Range = SRange.getA1Notation();
//get the data values in range
var SData = SRange.getValues();
// tss = target spreadsheet
var tss = SpreadsheetApp.openById('1_t7BDCWgHJDip_cndzVashxLDQ_pVS6obi3I9TB_EJI');
var ts = tss.getSheetByName('Vitosha'); // ts = target sheet
//set the target range to the values of the source data
ts.getRange(A1Range).setValues(SData);
}
}
答案 0 :(得分:0)
您使用的是简单的触发器onEdit
。此类触发器未经授权即运行,因此受到多个restrictions的约束,例如:
他们可以修改他们绑定的文件,但无法访问其他文件,因为这需要授权。
这就是SpreadsheetApp.openById
无法在您的代码中执行的原因。
解决方案:将该函数重命名为onEdit以外的其他函数,并在编辑时添加installable trigger。可安装的触发器(就像创建它的用户)一样运行,因此可以访问您可以访问的任何文件。