谷歌脚本真的很奇怪的错误发布

时间:2018-03-12 03:26:42

标签: javascript parsing google-apps-script

我正在尝试使用Google Apps制作帖子。

function makePost(url,page,status,token) {
var form = {
    "page" : 1,
    "statuses[]": status.toString().toLowerCase(),    
}
var options = {
    'method': 'post',
    'headers' : {"Authorization" : "BASIC "+token},
    'contentType': 'application/x-www-form-urlencoded',
    'payload' : form,
};
var response = UrlFetchApp.fetch(url, options);
var jsonResponse = JSON.parse(response.getContentText());
return jsonResponse;}

问题似乎是该页面已经过了1.0,这使得目标网址在尝试强制转换时返回错误。

已在How to convert a string to number using Google Apps Script中尝试了答案。

我无法将其作为String传递,因为在这种情况下,API会以奇怪的行为返回结果。

是否可以将其作为整数传递而不将其更改为1.0?

任何建议或帮助都会有所帮助, 感谢

更新:所以,我找不到实现这个目标的方法。 UrlFetchApp每次都会更改它。幸运的是,我们可以通过在API中对响应进行排序来解决它,并且传递字符串的行为是不稳定的。

感谢您的帮助和建议!

1 个答案:

答案 0 :(得分:0)

此处与Stripe REST连接在一起,后者强制执行基于表单的主体。它一定是UrlFetchApp的错误。

当我使用

payload: {
  amount: 1000,
  currency: 'USD',
}

UrlFetchApp始终对其进行编码,请注意小数点.0

"payload":"amount=1000.0&currency=USD"

但是我通过将其转换为字符串来解决它。

payload: {
  amount: String(1000),
  currency: 'USD',
}

奇怪的是,有效负载现在将正确编码为

"payload":"amount=1000&currency=USD"

因为form-urlencoded没有指定值的类型,所以在这种情况下,不是数字字符串或整数。这是服务器解释值的实现。

相关问题