Google apps script 谷歌应用程序脚本-应用程序未经验证,@OnlyCurrentDoc会大幅降低脚本速度

Google apps script 谷歌应用程序脚本-应用程序未经验证,@OnlyCurrentDoc会大幅降低脚本速度,google-apps-script,Google Apps Script,我有一个电子表格,它通过基于时间的触发器上的应用程序脚本从API获取数据,其他用户可以复制它来查看自己的数据(成千上万的人正在使用它)。该脚本非常简单,它通过UrlFetchApp.fetch()获取数据并将其放入电子表格中,并且它有一个函数,人们可以在首次复制电子表格后调用该函数来设置基于时间的触发器(触发器无法复制) 几个月前,制作副本的用户在授权应用程序脚本运行时会遇到“此应用程序未验证”屏幕。我知道这是由于谷歌改变了安全性,但我无法找到一种方法来正确地摆脱未经验证的状态。这就是我所尝试的

我有一个电子表格,它通过基于时间的触发器上的应用程序脚本从API获取数据,其他用户可以复制它来查看自己的数据(成千上万的人正在使用它)。该脚本非常简单,它通过UrlFetchApp.fetch()获取数据并将其放入电子表格中,并且它有一个函数,人们可以在首次复制电子表格后调用该函数来设置基于时间的触发器(触发器无法复制)

几个月前,制作副本的用户在授权应用程序脚本运行时会遇到“此应用程序未验证”屏幕。我知道这是由于谷歌改变了安全性,但我无法找到一种方法来正确地摆脱未经验证的状态。这就是我所尝试的:

  • 作为开发人员验证我的项目。这不起作用,因为当人们复制电子表格时,它是他们自己拥有的一个新项目,而其他用户在通过复制创建项目时,自然没有验证该项目
  • @OnlyCurrentDoc
    添加到电子表格顶部。这在技术上是可行的,但仅添加
    @OnlyCurrentDoc
    会导致脚本的运行时间从4秒变为180秒
  • 可以在制作电子表格的副本,这是脚本的代码,该脚本触发“未验证的应用程序”消息,并在添加了
    @OnlyCurrentDoc
    代码段的情况下运行更长时间:

    /**
     * @OnlyCurrentDoc
     */
    
    function CreateTrigger() {
      // First delete old triggers
      var allTriggers = ScriptApp.getProjectTriggers();
      for (var i = 0; i < allTriggers.length; i++) {
        ScriptApp.deleteTrigger(allTriggers[i]);
      }
    
      // Then create new triggers
      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var interval = sheet.getRange("RefreshSetting").getValue().slice(0,2);
      ScriptApp.newTrigger("Fetch").timeBased().everyMinutes(interval).create();
      ScriptApp.newTrigger("Refresh").forSpreadsheet(sheet).onEdit().create();
    
      // Then give user feedback of success 
      if (ScriptApp.getProjectTriggers().length == 2) {
        sheet.getRange('Settings!B24').setValue('The sheet is automatically refreshing!');
        sheet.getRange('Settings!B24').setBackground('#b6d7a8');
      } else {
        sheet.getRange('Settings!B24').setValue('Click here to start automatic refreshing!');
        sheet.getRange('Settings!B24').setBackground('#ea9999');
      }
    }
    
    /**
    *@OnlyCurrentDoc
    */
    函数CreateTrigger(){
    //首先删除旧触发器
    var allTriggers=ScriptApp.getProjectTriggers();
    对于(var i=0;i
    有没有人知道有什么方法可以阻止“未验证的应用程序”消息出现在我的场景中,或者为什么
    @OnlyCurrentDoc
    标志会使脚本速度减慢很多(基本上使其无法使用)


    谢谢你的帮助

    这是您在测试应用程序时的预期行为。如果要删除此邮件,可以:

  • 拥有一个域名并拥有