Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 克隆文件时,如何在Google工作表中自动执行OAuth请求?_Google Apps Script_Google Sheets_Oauth_Spreadsheet - Fatal编程技术网

Google apps script 克隆文件时,如何在Google工作表中自动执行OAuth请求?

Google apps script 克隆文件时,如何在Google工作表中自动执行OAuth请求?,google-apps-script,google-sheets,oauth,spreadsheet,Google Apps Script,Google Sheets,Oauth,Spreadsheet,我在驱动器中有一个电子表格文件,它通过脚本,通过复制模板文件并重命名,在子文件夹中创建另一个文件。 这个新文件还使用了一些需要OAuth的脚本。问题是新文件执行了一个function onOpen(),但它无法正常运行,因为它需要OAuth批准。模板文件已经被授权,但是我必须创建一个按钮来触发onOpen函数一次或多次。是否有一种方法可以“跳过”OAuth,以便每次我克隆模板时,新文件已经具有OAuth权限 这是主文件thst上创建子文件的代码: var newfile = template.m

我在驱动器中有一个电子表格文件,它通过脚本,通过复制模板文件并重命名,在子文件夹中创建另一个文件。 这个新文件还使用了一些需要OAuth的脚本。问题是新文件执行了一个function onOpen(),但它无法正常运行,因为它需要OAuth批准。模板文件已经被授权,但是我必须创建一个按钮来触发onOpen函数一次或多次。是否有一种方法可以“跳过”OAuth,以便每次我克隆模板时,新文件已经具有OAuth权限

这是主文件thst上创建子文件的代码:

var newfile = template.makeCopy("newname",folder);
newfile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
这是新文件上的代码:

function onOpen(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getSheetByName('sheet1').getRange('A1');
  var name = ss.getName();
  
  if(range.getValue() != name){
    range.setValue(name);
  }
}
问题是,当我打开文件时,A1的内容没有改变。我必须打开脚本,运行onOpen函数,授权OAuth并重新运行函数

有没有什么方法可以自动执行,这样我就不必重新授权每个新文件

先谢谢你

编辑: 在我的驱动器中有一个名为“ProjectManager”的文件,还有一个名为“Projects”的文件夹,其中有一个名为“Template”的文件。 ProjectManager有一个按钮可以复制模板并重命名它。它运行以下脚本:

var template = DriveApp.getFilesByName('Template').next();
var newfile = template.makeCopy("name", folder);
newfile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
function onOpen() {
  var ss    = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getSheetByName('sheet1').getRange('A1');
  var name  = ss.getName();
  
  if (range.getValue() != name) {
    range.setValue(name);
  }
}
“名称”和“文件夹”之前已定义

现在,模板(以及新文件)运行以下脚本:

var template = DriveApp.getFilesByName('Template').next();
var newfile = template.makeCopy("name", folder);
newfile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
function onOpen() {
  var ss    = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getSheetByName('sheet1').getRange('A1');
  var name  = ss.getName();
  
  if (range.getValue() != name) {
    range.setValue(name);
  }
}
ProjectManager和模板(以及副本)都运行其他功能。但是当我打开新文件时,onOpen函数对文件没有影响。我添加了一个按钮,在文件打开后再次触发onOpen功能,但是OAuth窗口弹出;对于已经授权的模板,这不会发生

因为我是唯一一个使用这个文件的人,我想自动授权脚本的使用,所以我不必授权我创建的每个文件


顺便说一句,我在这里算是个傻瓜;仅供参考。

对我不起作用。或许我可以进一步说明。我会编辑这篇文章。对我不起作用。或许我可以进一步说明。我会编辑这篇文章。