Google apps script 如何在制作文档副本时自动更改google工作表的所有者

Google apps script 如何在制作文档副本时自动更改google工作表的所有者,google-apps-script,Google Apps Script,我正在尝试设置文档复制后的所有者权限。我工作的公司有一份清单文件,用于监控任务。我们有一份主文件,当员工需要启动自己的检查表时,他们会制作一份主文件的副本,然后编辑副本 问题是,当发生这种情况时,它们会自动成为文件的所有者,然后可以编辑任何受保护的字段。我想设置一个onOpen(),这样当复制清单时,它们将从所有者状态中删除,我将替换它们 我尝试过使用setUser,但它似乎不是一个有效的方法 function onOpen() { var ss = SpreadsheetApp.getA

我正在尝试设置文档复制后的所有者权限。我工作的公司有一份清单文件,用于监控任务。我们有一份主文件,当员工需要启动自己的检查表时,他们会制作一份主文件的副本,然后编辑副本

问题是,当发生这种情况时,它们会自动成为文件的所有者,然后可以编辑任何受保护的字段。我想设置一个onOpen(),这样当复制清单时,它们将从所有者状态中删除,我将替换它们

我尝试过使用setUser,但它似乎不是一个有效的方法

function onOpen() {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getOwner();

  var owner = ss.setOwner("email")

}
我收到以下消息:

TypeError:无法调用null的方法“setOwner”。(第5行,文件“集合所有者”)


我希望能够运行一些脚本,在打开文档后将复制的电子表格的所有者更改为我自己,以便保留所有保护。

setOwner方法是DriveApp的一部分

试试这个:

function setOwner(){

  var emailAddress = 'user@domain.com';
  var id = SpreadsheetApp.getActiveSpreadsheet().getId();
  var file = DriveApp.getFileById(id).setOwner(emailAddress);
}


编辑说明:您还需要启用高级谷歌服务-

谢谢您的回复。这似乎无法解决问题。使用此函数时,我遇到错误:无法在共享驱动器项上使用此操作。我当然很想听听你的其他想法。我不确定它是否适用于共享驱动器。此外,请确保您在要修改的文件中具有必要的权限。我已经检查了这个方法,并且工作正常。