【问题标题】:Script for copying an existing spreadsheet when a different spreadsheet is edited编辑其他电子表格时复制现有电子表格的脚本
【发布时间】:2020-12-10 23:31:57
【问题描述】:

我对 Google 脚本世界非常陌生,并且正在尝试编写一个脚本,以便当有人编辑电子表格中的两列之一时,它会导致根据其他电子表格的值复制和重命名不同的电子表格被编辑的行中的列。我到目前为止的脚本如下,所有日志都正常工作,但我收到与最终复制功能相关的错误:“异常:您无权调用 DriveApp.getFolderById。”

现在,我在正在编辑的电子表格上有一个可安装的触发器。如何让这些权限正常工作?非常感谢任何建议!

function CreateNewSheet(e) {//"e" receives the event object

  var col = e.range.getColumn();//Get column number of edited cell
  Logger.log(col)
  
  var row = e.range.getRow(); //Get row number number of edited cell
  Logger.log(row)
  
  if (col != 12 && col != 14) {return;}// Halt the code if the column is not one of 2 of interest
  Logger.log("in the function")
  
  var id = "1qg5ZZOifJ1l0V4N8Gxa3qhOBRiMwpyFawdUDny7IB-o"; //ID of other spreadsheet to be copied
  var initial = e.value; //value from current spreadsheet needed for rename
  Logger.log(initial)
  var num = SpreadsheetApp.getActiveSheet().getRange(row, 1).getValue(); //value from current spreadsheet needed for rename
  var name = num + "_" + initial
  Logger.log(name)
  
  var destFolder = DriveApp.getFolderById("1DKpPbht1gGeKstXKMz6VtCz4TGj-4RJm")
  DriveApp.getFileById(id).makeCopy("name", destFolder);
};

【问题讨论】:

  • 你需要一个可安装的触发器
  • SpreadsheetApp.openById(id) 如果触发器很简单,则无法运行。使用可安装的触发器。您可以使用 google/stackoverflow 或查看文档 here 如何创建可安装的触发器。
  • 谢谢你们——我已经切换到一个可安装的触发器,现在我的最后两行出现了一个特定的权限错误(见编辑的代码)
  • @MS 删除当前触发器并创建一个新触发器,以便您可以访问 DriveApp 方法。如果有效,您可以确认下面的答案。

标签: google-apps-script google-sheets


【解决方案1】:

解释/解决方案:

需要注意的两点:

  1. 您需要installable trigger 才能使用需要授权的方法。您更新了答案并做到了。

  2. 关于第二个问题,我相信您在代码底部添加 DriveApp 行之前创建了可安装触发器。如果这是真的,那么您还没有授予脚本访问您的驱动器的权限。

删除当前可安装的触发器并创建一个新触发器,我希望新触发器会要求您允许访问 DriveApp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 2017-10-10
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2023-03-28
    • 2013-11-16
    • 2015-08-10
    相关资源
    最近更新 更多