我尝试从其他电子表格中的onEdit事件为我的Google电子表格设置新值。我得到例外:不允许行动。我无法理解我做错了什么。我很乐意为您提供帮助,因为我只是迈出了JS + Google Docs脚本的第一步。
function onEdit(e) {
if (e.value == "1")
updateValue(e);
else
Browser.msgBox("Type 1 in this cell");
}
function updateValue(curRange) {
//Get needed SpreadSheet ID and Cell Index (exp:D2) from current sheet
var ssCur = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ssCur.getSheets()[0];
var referenceID = sheet.getRange(curRange.range.getRow(), curRange.range.getColumn()+2).getValue();
var cellCoordinate = sheet.getRange(curRange.range.getRow(), curRange.range.getColumn()+3).getValue();
// Here still work good and get right values
Browser.msgBox(referenceID); //tracing string
try {
//Create remote spreadsheet object - this string catching Exception
var ss = SpreadsheetApp.openById(referenceID);
//Create workbook (sheet)
Browser.msgBox(ss.getName());
var sheets = ss.getSheets();
var sheet4Update = sheets[0].getRange(cellCoordinate).setValue('1');
}
catch(err) {
Browser.msgBox(err);
}
}
答案 0 :(得分:5)
您可以修复您的代码: 1)不要从触发器调用msgBox或任何模态。打破很多东西。 2)您无法从简单触发器访问其他文档,而且它以用户身份运行,因此您可能没有其他内容的权限。而是使用不同的名称(而不是onEdit)自行安装触发器,并将其设置为在编辑文档时触发。
答案 1 :(得分:0)
查看文档Understanding Triggers,特别是对简单触发器的限制:
...
- 他们只能修改包含的文档。禁止访问其他文档。