【发布时间】:2018-09-04 16:03:25
【问题描述】:
我有一个正在运行的 Google Script-JSON-javascript webapp,但是当我更改 JSON 输出、保存新的 Google Script 版本并发布为 web 应用程序时,网页会引发 CORB 错误。
在 GS 中返回一个版本,让它再次工作。为什么新的 GS 版本会导致错误。即使使用相同的代码但在新版本中仍然会引发错误。是否存在 GS 版本缓存问题?我可以做些什么来更新版本?
当前版本的工作页面:https://arcacademy.ca/arc-academy-calendar-2018-2019/
注意:您可以在控制台中看到正在发送的 JSON 文本。新代码具有相同的格式/结构,只是将颜色值从十六进制更改为 1 到 10。
尝试通过创建新的 GS 脚本来解决此问题,但收到相同的错误:
跨域读取阻塞 (CORB) 阻止了跨域响应 https://script.google.com/macros/s/AKfycbyM51kxwQOYM3hRyrW7semhmUka2z2w-jU09KBPL38IxKapeQQ1/exec?callback=receivedCalendarEvents MIME 类型为 text/html。看 https://www.chromestatus.com/feature/5629709824032768 了解更多 详情。
这是 not working page 在控制台中抛出上述错误:https://arcacademy.ca/clone-of-arc-academy-calendar-2018-2019/
Google Script 网络应用部署于:
- 像我一样执行
- 任何人,甚至匿名
谷歌脚本代码:
function doGet(e) {
if (e.parameter.method=="populate_events") {
var scriptProperties = PropertiesService.getScriptProperties();
var calendarId = scriptProperties.getProperty('calendarId') || 'primary';
var v = extractCalendarDateColors( calendarId, e.year );
return ContentService.createTextOutput(e.parameter.callback + "(" + JSON.stringify(v) + ")")
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
}
工作页面的 Javascript 代码(src= 是错误页面的唯一更改):
<script>
calendarEvents = {};
function receivedCalendarEvents(jsonData) {
console.log('received',jsonData);
calendarEvents = JSON.parse(jsonData);
}
</script>
<script src="https://script.google.com/macros/s/AKfycbzMCDiTzxGx2cN5dtXqCG2gvxJ6FGZ_t6UuPiT-HyDesu2--EY/exec?callback=receivedCalendarEvents"></script>
<script>
Google Console Cloud -- 我设置了以下内容:
- 启用日历 API
- 添加了 Apps 脚本客户端 ID
我感觉自己迷失在 Google 访问领域。任何帮助将不胜感激!
【问题讨论】:
-
我可以问你关于你的问题吗?您问题中的脚本是修改后的脚本吗?即“非工作页面”的脚本?虽然我不确定这是否直接导致解决方案,但您能否提供修改脚本前后的脚本?
-
如果你的问题的脚本是“not work page”的脚本,这个修改怎么样?在您的“不工作页面”中,提取时使用的端点是
https://script.google.com/macros/s/#####/exec?callback=receivedCalendarEvents。但是在您的问题中,您的 Web 应用程序脚本不会返回if (e.parameter.method=="populate_events") {}的值。实际上,The script completed but did not return anything.被返回。那么当endpoint修改为https://script.google.com/macros/s/#####/exec?method=populate_events时,情况会被修改吗? -
作为附加报告,当我尝试在我的环境中执行此操作时,使用查询时出现脚本错误。这是
Error: no such calendar: #####@group.calendar.google.com :: RangeError: Date is invalid. (line 66, file &quot;Code&quot;, project &quot;Arc Public Calendar v8&quot;)。所以请再次确认您修改的脚本。我们也看不到extractCalendarDateColors()。 -
上面的javascript来自工作页面。关于添加参数的优点。我已经更新了网页以反映这一点。谢谢你。然而结果相同。您可能会收到错误消息,因为 Google 控制台限制了来自我的域的请求。 extractCalendarDateColors 创建 JSON 对象及其字段:日期、名称和颜色。
-
Tanaike,我检查了不工作脚本的 GConsole 错误,我得到了相同的“错误:没有这样的日历”。两个项目脚本属性中的日历 ID 相同,因此我正在调查为什么我无法访问 Not Working 脚本中的日历(即使它在调试器模式下运行)。
标签: javascript google-apps-script