gpt4 book ai didi

javascript - Google Apps 脚本的内容服务返回 HTML 而不是 JSON

转载 作者:行者123 更新时间:2023-11-28 15:30:05 25 4
gpt4 key购买 nike

尝试 Content Service API,该示例在应该返回 JSON 时返回 HTML,我做错了什么?

https://developers.google.com/apps-script/guides/content

function doGet(request) {
var events = CalendarApp.getEvents(
new Date(Number(request.parameters.start) * 1000),
new Date(Number(request.parameters.end) * 1000));
var result = {
available: events.length == 0
};
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}

来自另一个文件的 GAS 尝试发出请求:

function myFunction() {
var url = "published URL";
url+="?start=1325437200&end=1325439000";

var options = {
method:"get"
}
var response = UrlFetchApp.fetch(url,options).getContentText();
response = JSON.parse(response); //error, unexpected token <
}

最佳答案

您对 ContentService 的使用是正确的,代码完全按原样工作。以下是我作为网络应用程序发布的代码副本的链接:

https://script.google.com/macros/s/AKfycbzx2L643LHw0oQAq1jBmKQh2ju_znGfmdj78dUypj36iF-s91w/exec

您遇到的问题与授权或身份验证有关,如果发布的脚本未经授权,则会返回 HTML 错误消息。

要检查这是否是您的问题,只需直接在浏览器中访问已发布的 URL 即可。如果您看到显示 JSON,则授权不是问题。如果您看到“执行该操作需要授权”错误消息,请打开已发布的脚本并从“运行”菜单中选择“doGet”,然后按照授权提示进行操作。

问题更有可能与脚本的发布方式有关。为了从另一个脚本访问您发布的脚本,必须将“谁有权访问该应用程序”设置为“任何人,甚至匿名”进行发布。如果您使用任何其他值,Google 将返回 HTML 登录页面而不是 JSON 响应,并且您会收到所看到的错误。

出现这种情况是因为 Google Apps 脚本通过 URLFetchApp 发送的请求未经身份验证,它们不携带运行代码的用户的凭据,而是作为匿名请求传入。

如果您在发布设置中不允许“任何人,甚至匿名”,Google 会将未经身份验证的请求重定向到 Google 登录页面。

关于javascript - Google Apps 脚本的内容服务返回 HTML 而不是 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com