用于在编辑其他电子表格时复制现有电子表格的脚本



我对谷歌脚本世界很陌生,我正在尝试编写一个脚本,以便当有人编辑电子表格中的两列中的一列时,它会根据所编辑行中其他列的值复制和重命名不同的电子表格。到目前为止,我的脚本在下面,所有日志都能正常工作,但我得到了一个与最终复制功能有关的错误:;异常:您没有权限调用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);
};

解释/解决方案:

需要注意的两件事:

  1. 您需要一个可安装的触发器来使用需要授权的方法。你更新了答案,你做到了。

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

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

最新更新