Google Apps Script 的 Content Service 返回 HTML 而不是 JSON
Content Service for Google Apps Script returning HTML instead of JSON
尝试内容服务 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 的使用是正确的,代码完全按原样工作。 以下是我作为 Web 应用程序发布的代码副本的链接:
https://script.google.com/macros/s/AKfycbzx2L643LHw0oQAq1jBmKQh2ju_znGfmdj78dUypj36iF-s91w/exec
您遇到的问题与授权或身份验证有关,如果已发布的脚本未获得授权,则会返回 HTML 错误消息。
要检查这是否是您的问题,只需直接在浏览器中访问已发布的 URL。如果看到显示 JSON,则授权不是问题所在。如果看到"需要授权才能执行此操作"错误消息,请打开已发布的脚本并从"运行"菜单中选择"doGet",然后按照授权提示进行操作。
更有可能的是,问题与脚本的发布方式有关。要从其他脚本访问已发布的脚本,必须使用"谁有权访问应用"设置为"任何人,甚至是匿名"来发布该脚本。 如果您使用任何其他值,Google 会返回一个 HTML 登录页面,而不是您的 JSON 响应,并且您会收到看到的错误。
发生这种情况是因为通过URLFetchApp从Google Apps Script发送的请求未经身份验证,它们不携带运行代码的用户的凭据,并且作为匿名请求进入。
如果您在发布设置中不允许使用"任何人,甚至是匿名",Google 会将未经身份验证的请求重定向到 Google 登录页面。
- 如何将json数据显示为html
- 如何将JSON转换为HTML下拉菜单
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 如何在html angular中显示嵌套的json元素
- 从JSON填充列表(而不是HTML)
- 在HTML页面上将URL解析为可读的json格式
- tu如何将id放在填充了json数据的html表td上
- 嵌套JSON到平面HTML表
- http请求使用html而不是json进行响应
- 如何在带有nunjucks和gullow数据的JSON数据中使用带有HTML的内容
- 使用Angular显示JSON中的HTML
- 如何使用jQuery来解析json并将其作为列表输出到HTML中
- 通过Azure存储以HTML形式获取JSON文件
- ngResource没有'从JSON文件解析HTML时不起作用
- JavaScript-HTML表单到JSON(空值)和格式
- 使用 HTML JSON 进行调试
- jQuery获取text/html/json与脚本
- 测试字符串是否以.html|.html|.json结尾
- HTML Json解析字符串
- 如何编写一个HTML JSON AJAX测试工具与美化,语法突出显示JSON结果