google-apps-script - GAS Webapp/Dialog 返回意外结果
问题描述
对话框似乎使用与 webapps 相同的 web 界面,换句话说,前端 html/javascript 和后端 google 应用程序脚本。
如果我尝试返回由我的电子表格而不是直接向上的数组制作的数组,我会遇到一些意想不到的行为。
这是我的代码
function returnRowArray(number){
if (number == null) number = 4;
thisSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TST Project Tracker");
console.log("L4 returnRowArray(): %s", number);
var headerRow = thisSheet.getRange("A1:DC1").getValues();
var resultRow = thisSheet.getRange(number,1,1,20).getValues();
var result = {}
result.info = resultRow[0][1];
result.site = site;
//result.row = resultRow;//LINE IN QUESTION
console.log("L10: %s", JSON.stringify(result));
return result;
}
如果我从我的对话框中运行这个函数,它会返回 null 到对话框,但是注释掉的行会正确返回对象。
两个客户端记录的结果显示为
L35:空
和
L35:对象
分别,我可以从对象中提取值。
如果我运行服务器端测试
function test_returnRowArray(){
var o = returnRowArray(4);
console.log("L15: "+o);
console.log("L16: "+ JSON.stringify(o));
}
它为两个版本提供了正确的结果。
那么这里发生了什么?我最初认为这是一个大小限制,但即使我做了我在这里所做的,使数组只是前 20 列,这仍然会发生。
有任何想法吗?
编辑:我会注意到如果我让它 result.row = ["this","array","works"] 它确实有效,那么 getrange 数组如何让它生气?
根据评论添加:
这就是前端调用的样子
function importInfo(){
google.script.run.withSuccessHandler(function(result){console.log("L35: %s", result);}).returnRowArray(row);
}
解决方案
推荐阅读
- css - 用 url 覆盖除背景图片之外的所有背景图片
- python - 从文本文件创建列表
- javascript - 在 AJAX 中发送字符串参数
- javascript - 调用 firebase.auth 是否算作 Firebase 限制的下载?
- asp.net-core - 如何授权控制器 .NET Core API
- tensorflow - MNIST 识别手写单词
- java - Java XML 问题:文档中根元素之后的标记必须格式正确
- angular - 如何在 Ionic 4 中使用离子输入修复 *ngFor 的 ExpressionChangedAfterItHasBeenCheckedError
- ios - How to fix error with xcodebuild in GitHub Actions
- redis - 以 redis 作为代理的 celery 和结果后端使用了太多的 redis 连接