Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 触发函数时无法进行UrlFetch_Google Apps Script - Fatal编程技术网

Google apps script 触发函数时无法进行UrlFetch

Google apps script 触发函数时无法进行UrlFetch,google-apps-script,Google Apps Script,我构建了GoogleApps脚本应用程序,通过外部API获取数据 运行此应用程序时,我得到了预期的结果,没有任何错误。然而,当使用时间驱动触发器运行它时,我得到了错误。有人知道为什么会发生这种错误吗 守则: function triggerFetchTest() { // get token try { var id = "my_id", password = "my_password", tokenUrl = ("https://api.ex

我构建了GoogleApps脚本应用程序,通过外部API获取数据

运行此应用程序时,我得到了预期的结果,没有任何错误。然而,当使用时间驱动触发器运行它时,我得到了错误。有人知道为什么会发生这种错误吗

守则:

function triggerFetchTest() {

  // get token
  try {

    var id = "my_id",
        password = "my_password",
        tokenUrl = ("https://api.example.jp/v1/foo/auth/get_token?id=" + id
                     + "&password=" + password),
        tokenResponse = UrlFetchApp.fetch(tokenUrl);

    var token = JSON.parse(tokenResponse.getContentText())["token"];

    Logger.log(token);

  }

  catch(e) {

    Logger.log(e);

  }

}

此外:

  • 如果我在脚本编辑器中按“运行”按钮,我可以得到正确的响应
  • 我设置触发器没有任何问题
  • 我试图设置“muteHttpExceptions”:true,但出现了错误
  • 即使被触发,中显示的以下代码也正常
var url='?' +“q=滑板+狗” +“&开始索引=21” +“&最大结果=10” +“&v=2”; var response=UrlFetchApp.fetch(url); Logger.log(响应)


我想为此应用程序设置每日计时器并自动生成报告。请给我一些想法


*这篇文章是我在Stackoverflow的第一篇文章,我通常不会说英语,所以如果你不能阅读我上面的英语,我很抱歉…

sama,
尝试通过函数设置触发器。首先删除触发器,然后将此函数添加到代码中并运行:

function setTrig(func){
  func=func||"triggerFetchTest";
  ScriptApp.newTrigger(func).timeBased().everyMinutes(5).create();
}

类似的事情也发生在我身上,我记不清确切的解释。

尝试将主函数设置为doGet()或doPost(),并使用以下设置将脚本发布为web应用程序:以我的身份执行应用程序,并允许任何人,甚至匿名访问它。然后创建另一个函数,对web应用URI执行GET或POST请求

我认为它可以工作,因为触发器不会在您登录时运行(类似于AuthMode.NONE),它需要能够执行urlFetch,当您在应用程序上执行该操作时,将调用doGet()或doPost(),这是所有工作的完成位置


示例:

是一个与谷歌应用程序脚本UrlFetch和触发器相关的脚本。请在这个公开问题上加上星号并留下评论,迫使谷歌对此采取行动。

Harold,谢谢你的回复。我尝试按照您的建议以编程方式设置触发器,但没有成功<代码>函数everyDayTrigger(){ScriptApp.newTrigger(“triggerFetchTest”).timebase().everyMinutes(1.create();}我已经选中了“Transcript”,它显示运行的脚本在“UrlFetchApp.fetch()”点失败。我什么都不知道…到底是什么错误?