我正在尝试为Google电子表格创建自动邮件系统。 我想创建一个菜单按钮,用户可以按下该按钮并获得一个带有大(段落大小)文本框的对话框,以便在其中写入消息。
我的问题是创建一个能够传递用户文本输入的正确实例:
Browser.inputBox("title")
,但这只生成一行文本框。SpreadsheetApp.getUi().prompt
方法,但这只会生成一行文本框。关于我应该使用什么类/方法来获取用户短信的任何想法?
修改 这是另一个去,这次使用shoeModalDialog()和html代码。 我认为它非常接近,但还没有工作。想法?
function showDialog() {
var html = HtmlService.createHtmlOutputFromFile('testHTML')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(600)
.setHeight(400);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showModalDialog(html, 'Dialog title');
}
function jsGetText(text) {
//do something with the string object
}
<script>
function mySuccessFunction(textBox) {
jsGetText(textBox.value)
}
</script>
<form method="post" >
<textarea name="textBox" id="textBox" cols="60" rows="20" class="html-text-box"></textarea><br>
<input type="submit" value="send" class="html-text-box" onclick="google.script.run.withSuccessHandler(mySuccessFunction).withUserObject(document.getElementById('textBox')); google.script.host.close()">
<input type="reset" value="cancel" class="html-text-box" onclick="google.script.host.close()">
</form>
答案 0 :(得分:0)
showDialog功能看起来不错。不要将所有代码放入onClick()
属性中。从表单标记中删除method="post"
。在这种情况下,您不想发送POST请求。使用Logger.log()
语句和console.log()
语句,并不断检查执行日志中的服务器错误。
function jsGetText(text) {
Logger.log('text: ' + text);
Logger.log('text.length: ' + text.length);
for (var key in text) {
Logger.log('key: ' + key);
Logger.log('value: ' + text[key]);
};
var objFieldOne = text['textBox'];
Logger.log('objFieldOne: ' + objFieldOne);
//do something with the string object
return objFieldOne;
};
<script>
function fncGetUserTxt() {
var objUsrInput = document.getElementById('idInputForm');
/* for (var key in objUsrInput) {
console.log('key: ' + key);
console.log('value: ' + objUsrInput[key]);
};
*/
google.script.run
.withSuccessHandler(mySuccessFunction)
.jsGetText(objUsrInput);
//google.script.host.close()
};
function mySuccessFunction(textBox) {
alert('Success! : ' + textBox);
};
</script>
<form id='idInputForm'>
<textarea name="textBox" id="textBox" cols="60" rows="20" class="html-text-box"></textarea><br>
<input type="submit" value="send" class="html-text-box" onmouseup='fncGetUserTxt()'>
<input type="reset" value="cancel" class="html-text-box" onclick="google.script.host.close()">
</form>