使用UrlFetchApp.fetch()方法时出现 "坏值 "错误。

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

我已经看到这个问题的不同版本的问法,但我似乎无法绕过我的头的答案。我有下面的代码,每小时运行一次,将邮件中的信息发送到我的Wix网站,以解析信息。一旦该函数从我的Wix网站获得返回,我想触发另一个函数来通知订阅者。

var POST_URL = "https://www.myWixSite.com/_functions/shiurAddition";
var EMAIL_URL = "https://www.myWixSite.com/_functions/shiurNotify";

function gmailInboxToWix() {
  var oldLabel = GmailApp.getUserLabelByName("toBeProcessed");
  var newLabel = GmailApp.getUserLabelByName("ProcessedByScript");
  var threads = oldLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      var HTML = messages[j].getBody()
      var Date = messages[j].getDate()
      messages[j].markRead()
      var data = {Date: Date, HTML: HTML};
      var options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json",
        },
        "payload": data
      };
      var response = UrlFetchApp.fetch(POST_URL, options)
      Logger.log(response)
      var emailResponse = UrlFetchApp.fetch(EMAIL_URL, response);
    }
    threads[i].removeLabel(oldLabel).refresh();
    threads[i].addLabel(newLabel);
  }
}

当运行这个功能时,我收到了来自谷歌的一个错误。

异常: 错误值(文件 "代码 "第24行)。

第24行是这段代码。

 var emailResponse = UrlFetchApp.fetch(EMAIL_URL, JSON.stringify(response));
google-apps-script urlfetch
1个回答
0
投票

遇到的问题

试图使用字符串化的对象来代替高级参数

解释

根据 文件, fetch() 方法有两个参数。

  1. 发出请求的URL(必填)。
  2. 带有高级配置参数的对象(可选

因此,传递除了 Object 将会失败。

  1. JSON.stringify() 返回一个 绳子,因此是无效的数据类型。
  2. fetch() 的实例,因此是无效的数据类型。HTTPResponse,这也是无效的。

解决办法

按照Tanaike的建议,在第一个请求之后,但在第二个请求之前,将以下内容改为 payload 参数到响应的内容,然后用 options,不是 response:

options.payload = response.getContentText();

备注

  1. 有一个 contentType 高级参数,用它来设置类型,其余的将由服务处理,你不需要显式设置头。
© www.soinside.com 2019 - 2024. All rights reserved.