如何使用脚本制作Google表格模板,在该实例中,在每个实例创建时用户都不需要授权脚本访问权限?

问题描述 投票:1回答:1

我有一个带有菜单的google表格,调用脚本。脚本将另存为带有已保存版本的库。此工作表将作为Google域模板保存在共享驱动器上。用户每周制作约10张纸,并且每次都可以授权脚本。

可以使用哪些解决方案来避免此重复过程。加载项似乎不是正确的解决方案,因为脚本必须仅对此电子表格有效]

function onEdit(e) {
  const rangeName="A2";
  var ass=SpreadsheetApp.getActiveSpreadsheet();
  var as=ass.getActiveSheet();
  var adresse=as.getActiveRange().getA1Notation();

  Logger.log(JSON.stringify(e));
  if (adresse===rangeName) {
    SpreadsheetApp.getActiveSpreadsheet().rename(as.getRange(rangeName).getValue());
    ass.toast("DONE!");
  }
google-apps-script google-sheets google-oauth2
1个回答
0
投票
  • 您有一个脚本,该脚本应适用于从某个模板制作的所有副本(多个用户制作副本)。
  • 您要避免用户不得不为他们创建的模板的每个副本重新授权脚本。

如果正确,我认为您最好的选择是将脚本部署为附件,并为域中的所有用户安装附件。工作流程如下:

  • 创建一个独立的Apps脚本项目并将其与standard GCP project关联。
  • 在函数的开头,在某个单元格中寻找一个值,其目的是将文件标识为模板的副本。例如,如下所示:
function yourFunction() {
  var templateIdentifier = SpreadsheetApp.getActive().getSheetByName("Settings").getRange("A1").getValue();
  if (templateIdentifier = "12345") { // Check that file is copy of template "12345"
    // Execute the desired script actions
  }
}
  • 模板及其所有副本均应具有此值,因此您可能应该使用原始模板中的版本protect this cell(所有副本都将保留此保护)。就个人而言,我还将将此单元格放在隐藏的工作表中,以便用户看不到它。

  • Test该插件正常工作,并且publish it。遵循[本指南]。

  • 发布附加组件后,请按this的名称为域中的所有用户安装它。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.