客户端successHandler为null,但服务器日志显示结果
Client successHandler gets null, but server logs show results
我正试图在Google Sheet侧边栏内的HTML iframe中列出Google电子表格的所有编辑器。正如你在下面的代码中看到的,我在Logger中显示了结果;它在那里工作,给我看编辑列表。但是,当我使用google.script.run
将结果传递给HTML文件时,它似乎在途中"迷路了"。我没有收到任何错误,只是侧边栏中的一个"空"列表。
我在.gs中有以下代码:
function myFunction() {
var html = HtmlService.createHtmlOutputFromFile('form1');
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showSidebar(html);
}
function editores() {
var editors = SpreadsheetApp.getActiveSpreadsheet().getEditors();
for (var i = 0; i < editors.length; i++) {
var editor = editors[i];
Logger.log(editor)
}
return editors;
}
这个HTML中的代码:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function listEditors(editors) {
for (var i = 0; i < editors.length; i++) {
var eltag = document.getElementById('edit').innerHTML;
var edit = editors[i];
document.getElementById('edit').innerHTML = eltag+'<br/>'+edit;
}
}
google.script.run.withSuccessHandler(listEditors).editores();
</script>
</head>
<body>
<p id='edit'></p>
</body>
</html>
当我执行myFunction()
时,它会打开侧边栏,显示一个"null"列表。但当我在脚本控制台中打开Logger时,它会显示编辑器列表。。。数据似乎在传输过程中"丢失"了。
您正在传递一个Google Apps Script User对象数组,由于只有简单的对象可以返回到客户端*,因此结果为null
。
解决这个问题的一种方法是使用getEmail()
将每个用户的地址作为字符串,并返回一个数组:
function editores() {
var editors = SpreadsheetApp.getActiveSpreadsheet().getEditors();
var editorStrArray = [];
for (var i = 0; i < editors.length; i++) {
var editor = editors[i];
Logger.log(editor);
editorStrArray.push(editor.getEmail())
}
return editorStrArray;
}
*google.script.run
的文档说,返回值(到successHandlers)的规则与服务器端函数的参数规则相同,特别是:
合法参数是JavaScript基元,如Number、Boolean、String或null,以及由基元、对象和数组组成的JavaScript对象和数组。
相关文章:
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 客户端服务器REST API captcha实现
- 如何在服务器控制台上打印前端日志消息
- NodeJs:如何在EC2实例中查看PM2运行的NodeJS服务器的日志
- php函数向XMPP服务器发送消息,不提供日志;不起作用
- 如何在生产服务器上测试、调试和查看 Node js 应用的控制台日志消息
- AngularJS:客户端错误的服务器端日志记录
- 捕获服务器端日志文件中的用户名
- 方法时间的Javascript服务器端日志记录
- 使用AJAX将客户端运行时间记录到服务器日志文件中
- 数据日志并发送到服务器
- 客户端Javascript崩溃的服务器端日志
- 日志含义连接服务器失败.(file:///android_asset/www/index.html)
- 在onbeforeunload中注销用户并将日志发送到服务器
- 收集调试日志,但只有在log4javascript出错时才将它们发送到服务器
- 在服务器上跟踪日志(我正在ssh'ing)并在网页上动态显示它
- 从glassfish服务器日志上的javascript函数打印JSON对象
- 客户端successHandler为null,但服务器日志显示结果
- 为什么我的流星应用程序日志到服务器,而不是客户端