【发布时间】:2012-12-26 13:15:24
【问题描述】:
我正在尝试使用ContentService,在带有Google Apps Script 的网页中提供JSONP,遵循“在网页中提供 JSONP” 子下this link 中提供的示例-topic.
GS 代码:
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(
request.parameters.prefix + '(' + JSON.stringify(result) + ')')
.setMimeType(ContentService.MimeType.JSON);
}
HTML/JS 代码:
<script src="https://script.google.com/macros/s/AKfycbwZCY0qrZ09szGvKOttA30IaJkdMAZrh_oNnvv0qzCqFWyuO5Wc/exec?start=1325437200&end=1325439000&prefix=alert"></script>
我通过将 GS 代码部署为 webapp 并使用以下参数发布了它:
- 执行应用程序为:用户访问网络应用程序
- 有权访问应用的人:任何人
不幸的是,每当我尝试运行/打开包含代码的 HTML 文件时,我在浏览器的控制台中收到以下错误,但什么也没发生:
如何正确运行 Google Apps 脚本链接中提供的这个示例?
[可选] 详细调查问题:
在浏览器生成的资源文件中发现的错误如下:
而浏览器翻译的DOM如下:
<html>
<head>
<script src="https://script.google.com/macros/s/AKfycbwZCY0qrZ09szGvKOttA30IaJkdMAZrh_oNnvv0qzCqFWyuO5Wc/exec?start=1325437200&end=1325439000&prefix=alert">
</script>
</head>
<body></body>
</html>
生成的链接,在我的例子中是:
"https://script.google.com/macros/s/AKfycbwZCY0qrZ09szGvKOttA30IaJkdMAZrh_oNnvv0qzCqFWyuO5Wc/exec?start=1325437200&end=1325439000&prefix=alert"
如果此链接放置在浏览器地址栏中,则会显示以下消息:
这意味着返回的授权响应无法在浏览器上显示并被翻译为有效的 DOM。
如何解决这个问题?
【问题讨论】:
标签: javascript google-apps-script jsonp