首页 > 解决方案 > 谷歌应用脚​​本在调试模式下运行,而不是在运行模式下

问题描述

您好 Google 脚本专家,我是 google 脚本的新手,正在尝试与 Google 文档中的 HTTP POST 相关的内容。

我有一个谷歌应用脚​​本,它在打开谷歌文档时发送一个发布请求(API)。

function onOpen() {
var ui = DocumentApp.getUi(); // Same variations.
  var actDoc = DocumentApp.getActiveDocument();
  var docID = actDoc.getId();
  var repeater = 0;
  var data = {
                'bstask':  text,
                'docid': docID
              };
   console.log(data);
   var options = {
         'method' : 'post',
                'contentType': 'application/json',
                // Convert the JavaScript object to a JSON string.
                'payload' : JSON.stringify(data)
              };
              ui.alert("Sending request with the payload" + data.bstask + " and " + data.docid);
              var response = UrlFetchApp.fetch('https://test.com/path', options);
              ui.alert("Response is: " + response.getResponseCode());
              if (response.getResponseCode() == 200) {
                Logger.log(response.getContentText() + response.getAllHeaders());
                ui.alert('Yey!! Document refreshed.');
              }
              else{
                ui.alert('Opps!! Document refresh failed.'+ response.getContent());
              }
  
}

此脚本用于向用户提供一个选项,以便在打开或刷新文档时更新文档。当我在调试模式下测试它时,该脚本运行良好并调用 API。但是,当我希望在打开文档时执行此脚本时,它不会调用 API,其余的 UI 提示都可以正常工作。我在这里遗漏了什么或脚本有问题吗?我真的很感激任何帮助!

标签: google-apps-scriptgoogle-docs-api

解决方案


简单触发器 - 限制

因为简单的触发器会自动触发,而不需要用户授权,所以它们受到几个限制:

  • 他们无法访问需要授权的服务。例如,简单触发器无法发送电子邮件,因为 Gmail 服务需要授权,但简单触发器可以使用匿名的语言服务翻译短语。

换句话说,UrlFetchApp.fetch()打开文档时调用不会执行,因为它需要授权。您也应该能够在执行日志中看到此失败。


推荐阅读