预期操作:我有两个电子表格(注意我没有说电子表格中的工作表,而是两个完全独立的电子表格)。
一个电子表格接收来自 Google 表单的提交。一个团队监控提交并将每个提交设置为不同的类别:已声明、未声明、已解决、未决。当事情被标记为待处理时,我需要将被标记的行复制到第二个电子表格中,由一个单独的团队处理它。
重要提示: IMPORTRANGE 是不够的。第二个团队需要操作复制的数据,而 IMPORTRANGE 和类似功能不允许这样做。结果,我一直在尝试appendRow()
改用。
问题:由于未知原因,一切正常,直到代码到达 点openById()
,此时执行失败并出现以下错误:
[13-10-23 15:00:59:117 PDT] SpreadsheetApp.openById([ss-key]) [0 seconds] [13-10-23 15:00:59:133 PDT] 执行失败:不允许操作(第 26 行,文件“PK-PR Manager”)[0.267 秒总运行时间]
我尝试了什么:我尝试将我的脚本项目保存为库并将其添加到另一个电子表格中,我尝试撤销对我的帐户的脚本访问权限并重新启用它。我尝试寻找将脚本链接到两个电子表格的方法(显然没有成功)。我在文档和任何我能找到的涉及上述功能的内容中都在 Google 上进行了广泛的搜索。我已经检查、双重检查和三重检查了我的所有变量、语法等。我还检查并更改了目标电子表格的共享权限,以防万一。
实际代码:
function onEdit(e) {
if (e.range.getColumn() == 2) {
var myCell = e.range;
status = myCell.getValue();
myCell.setFontWeight("bold");
if (status == "Claimed") {
myCell.setBackgroundColor("#F5B36C");
myCell = myCell.offset(0,1);
myCell.setValue(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss"));
} else if (status == "Resolved") {
myCell.setBackgroundColor("#95C47E");
} else if (status == "Pending") {
myCell.setBackgroundColor("#B4A7D6");
myCell = myCell.offset(0,1);
myCell.setValue(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss"));
var myRow = myCell.getRow();
var lineRange = master.getRange("C" + myRow + ":L" + myRow);
var lineValues = lineRange.getValues();
var pkss = SpreadsheetApp.openById(pkssKey);
//Logger.log(pkss.getName());
var pksheet = pkss.getSheetByName("Sheet1");
pksheet.appendRow(lineValues[0]);
} else {
myCell.setBackgroundColor("#E06767");
myCell.setValue("Unclaimed");
myCell = myCell.offset(0,1);
myCell.setValue("");
myCell = myCell.offset(0,1);
myCell.setValue("");
}
}
}