我想使用以下任意一种方式获取用户输入(HTML):
producer.send()
或
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Paste HTML below');
这些适用于小输入,但是当对感兴趣的页面复制整个HTML时会发生错误(在每种情况下)。无法捕获此错误,只会导致脚本崩溃。
你知道为什么会这样吗?我在文档中找不到任何提及输入大小限制的内容。
以不同的方式做任何经验?
编辑:根据评论中的建议,我尝试了另一种方法(如下)。传递大输入时,这也会失败(没有错误消息)。
首先我设置了var input = Browser.inputBox('Paste HTML below', Browser.Buttons.OK_CANCEL);
Page.html
然后在档案<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
Paste Sitemap Content Below
<textarea id="user-input-box" rows="4" cols="50"></textarea>
<script>
function logToConsole() {
var userInput = document.getElementById("user-input-box").value;
google.script.run.doSomething(userInput);
}
</script>
<input type="button" value="Close" onclick="logToConsole();google.script.host.close();" />
</body>
</html>
Code.gs
答案 0 :(得分:1)
我只是遇到了同样的问题,无法记录错误。就您而言,在您的情况下,您要先调用logToConsole()函数,然后在使用google.script.host.close()关闭对话框后立即调用
google.script.host.close()是问题所在。由于某些原因,它可能会取消脚本执行-通常在您发回大量数据时会发生这种情况。诀窍是,在调用脚本(然后调用google.script.host.close())时使用successHandler。这样,从对话框进行的数据传输将正确完成,并且当您调用withSuccessHandler()时,该回调将关闭对话框。尝试对您的代码进行此修订:
<script>
function logToConsole() {
var userInput = document.getElementById("user-input-box").value;
google.script.run.withSuccessHandler(closeDialog).doSomething(userInput);
}
function closeDialog() {
google.script.host.close();
}
</script>
<input type="button" value="Close" onclick="logToConsole()" />