Json 已发布的google脚本链接,带有返回打印空变量的google Sheet
因为我倾向于漫无边际,首先是一个简短的版本,如果你需要更多的信息,请阅读长版本 TL;DR 为什么会这样:Json 已发布的google脚本链接,带有返回打印空变量的google Sheet,json,function,google-apps-script,web-applications,Json,Function,Google Apps Script,Web Applications,因为我倾向于漫无边际,首先是一个简短的版本,如果你需要更多的信息,请阅读长版本 TL;DR 为什么会这样: function doGet(e) { var sheet = SpreadsheetApp.getActiveSheet(); var jobsCreated = sheet.getRange(12,2).getValue(); Browser.msgBox(jobsCreated); var params = JSON.stringify({number:jobsCreate
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年前,我在大学里学习了计算机科学学位编程,但从那以后,我没有做过多少编程,所以我基本上是个新手
现在来回答问题。我有一个非常简单的脚本,它是用GoogleSheets中的脚本编辑器创建的
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和static值,它就可以正常工作
var jobsCreated = 100;
{"number":100}
因此,我的结论是,与直接从编辑器运行脚本相比,从发布的链接运行脚本时访问单元格的值是个问题,但我不知道如何解决这个问题
还有一点信息,我正试图用这个计数器名为SMIRL,我从这里得到了大部分信息
试试这个:
function doGet(e) {
return ContentService.createTextOutput(Utilities.formatString('number: %s',SpreadsheetApp.getActiveSheet().getRange(12,2).getValue());
}
试试这个:
function doGet(e) {
return ContentService.createTextOutput(Utilities.formatString('number: %s',SpreadsheetApp.getActiveSheet().getRange(12,2).getValue());
}
您的问题在于如何使用
JSON.stringify
在JSON中,函数不允许作为对象值。
该函数将省略或更改为null
JavaScript对象中的任何函数
也就是说,您可以执行以下操作:
函数doGet(e){
//获取范围的值
var sheet=SpreadsheetApp.getActiveSheet();
var jobsCreated=sheet.getRange(12,2).getValue();
//把它串起来
var params=JSON.stringify({“number”:number=jobsCreated});
//返回JSON字符串
返回ContentService.createTextOutput(参数);
}
返回:
如果{“number”:123}
是数字123,或jobsCreated
如果{“number”:“Mangos”}
是字符串“Mangos”jobsCreated
注: 您应该避免在JSON中使用函数,这些函数将丢失其作用域,并且必须使用eval()将它们转换回函数
您的问题在于如何使用
JSON.stringify
在JSON中,函数不允许作为对象值。
该函数将省略或更改为null
JavaScript对象中的任何函数
也就是说,您可以执行以下操作:
函数doGet(e){
//获取范围的值
var sheet=SpreadsheetApp.getActiveSheet();
var jobsCreated=sheet.getRange(12,2).getValue();
//把它串起来
var params=JSON.stringify({“number”:number=jobsCreated});
//返回JSON字符串
返回ContentService.createTextOutput(参数);
}
返回:
如果{“number”:123}
是数字123,或jobsCreated
如果{“number”:“Mangos”}
是字符串“Mangos”jobsCreated
注: 您应该避免在JSON中使用函数,这些函数将丢失其作用域,并且必须使用eval()将它们转换回函数
好的,当我回复@Aerials时,再次感谢您的帮助。鉴于其他代码不适用于我的脚本,我决定创建一个新的工作表和脚本作为测试,并使用与它完全相同的代码
但是现在再仔细检查一下,我不认为这是个问题,因为它得到的号码没有任何问题。它正在由GoogleAnalytics插件填充的单元格。现在,当再次设置加载项以获取信息时,来自网站的脚本再次返回空值。因此,问题似乎在于脚本在使用附加组件填充时从工作表(仅发布版本)获取信息好的,当我回复@Aerials时,再次感谢您的帮助。顺便说一句,看到其他代码不适用于我的脚本,我决定创建一个新的工作表和脚本作为测试,使用与它工作时完全相同的代码
但是现在再仔细检查一下,我不认为这是个问题,因为它得到的号码没有任何问题。它正在由GoogleAnalytics插件填充的单元格。现在,当再次设置加载项以获取信息时,来自网站的脚本再次返回空值。因此,问题似乎在于脚本在使用附加组件填充时从工作表中获取信息(仅发布版本)修改后是否重新发布了脚本的新版本?2。删除Browser.msgbox和tryI已使用新版本重新发布,我尝试了所有更改,现在的版本号为16,关于Browser.msgbox,我也尝试了不使用它的版本。我把它放在那里只是为了检查我是否得到了一些东西,但是我没有使用try
console.log(jobsCreated)
测试它。和borel查看stackdriver中的日志。您应该保存一个新版本(创建一个新版本v17),然后发布。或者,只需尝试/dev
url@ITVHR看看我的答案是否适合你。修改后你是否重新发布了新版本的脚本。删除Browser.msgbox和tryI已使用新版本重新发布,我现在的版本号为16,我尝试了所有更改,关于Browser.msgbox i