1

预期操作:我有两个电子表格(注意我没有说电子表格的工作表,而是两个完全独立的电子表格)。

一个电子表格接收来自 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("");
    }
  }
}
4

0 回答 0