【发布时间】:2020-02-20 17:34:00
【问题描述】:
由于我倾向于漫无边际,首先是简短版本,如果您需要更多信息,请阅读长版本。
TL;DR
为什么会这样:
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var jobsCreated = sheet.getRange(12,2).getValue();
Browser.msgBox(jobsCreated);
var params = JSON.stringify({number:jobsCreated});
return ContentService.createTextOutput(params);
}
当我作为网站发布然后打开时返回:
{"number":""}
什么时候应该看起来更像这样{"number":2451}
完整版:
首先,我在大学学习编程以攻读计算机科学学位(10 年前),但从那以后我没有做过太多编程,所以我基本上是个新手。
现在回答问题。我有一个非常简单的脚本,它是使用 Google 表格中的脚本编辑器创建的
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var jobsCreated = sheet.getRange(12,2).getValue();
Browser.msgBox(jobsCreated);
var params = JSON.stringify({number:jobsCreated});
return ContentService.createTextOutput(params);
}
首先我得到我正在处理的工作表
然后我从该表中选择一个单元格
现在,如果我使用 msgBox 来确保我有正确的号码并运行脚本,它就会工作并显示消息。
接下来,我将变量格式化为 JSON,最后只创建一个文本输出。
现在我部署为 Web 应用程序
- 以我的身份执行
- 任何人,甚至是匿名的
当我访问该网站时,我只能看到这个:
{"number":""}
如果我更改代码并提供 jobsCreated 和静态值,它可以正常工作
var jobsCreated = 100;
{"number":100}
所以我的结论是,与直接从编辑器运行脚本相比,从发布的链接运行脚本时访问单元格的值存在问题,但我不知道如何解决这个问题。
更多信息,我正在尝试将其用于名为 Smiirl 的计数器,我从这里获得了大部分信息 https://medium.com/@m_nebra/bootstrapping-your-company-counter-22f5d4bc7dd4
【问题讨论】:
-
修改后是否重新发布了新版本的脚本?
-
2.删除 Browser.msgbox 并尝试
-
我已经重新发布了新版本,我现在是第 16 版,包含我尝试过的所有更改,关于 Browser.msgbox,我也尝试过没有它。我只是把它放在那里检查我是否得到了一些东西,但后来我没有测试它
-
试试
console.log(jobsCreated)。并在 stackdriver 中查看日志。您应该保存一个新版本(创建一个新版本 v17)然后发布。或者,只需尝试/devurl -
@ITVHR 看看我的回答是否适合你。
标签: json function google-apps-script web-applications