Javascript 如何使用谷歌电子表格从用户那里获取文本?
我正在尝试为谷歌电子表格创建一个自动邮寄系统。 我想创建一个菜单按钮,用户可以按下,并得到一个大的(段落大小)文本框对话框来写他的消息 我的问题是创建能够传递用户文本输入的正确实例:Javascript 如何使用谷歌电子表格从用户那里获取文本?,javascript,google-apps-script,Javascript,Google Apps Script,我正在尝试为谷歌电子表格创建一个自动邮寄系统。 我想创建一个菜单按钮,用户可以按下,并得到一个大的(段落大小)文本框对话框来写他的消息 我的问题是创建能够传递用户文本输入的正确实例: 我尝试使用Browser.inputBox(“title”),但这只生成一行文本框 我尝试使用SpreadsheetApp.getUi().prompt方法,但这同样只生成一行文本框 关于我应该使用什么类/方法来获取用户的文本消息,有什么想法吗 编辑 这是另一次尝试,这次使用shoeModalDialog()和
- 我尝试使用
,但这只生成一行文本框Browser.inputBox(“title”)
- 我尝试使用
方法,但这同样只生成一行文本框SpreadsheetApp.getUi().prompt
函数showDialog(){
var html=HtmlService.createHtmlOutputFromFile('testHTML')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(600)
.设置高度(400);
SpreadsheetApp.getUi()//或DocumentApp或FormApp。
.showmodaldiallog(html,“对话框标题”);
}
函数jsGetText(文本){
//对字符串对象执行一些操作
}
函数mySuccessFunction(文本框){
jsGetText(textBox.value)
}
showDialog功能看起来不错。不要将所有代码放入onClick()
属性中。从表单标记中删除method=“post”
。在这种情况下,您不希望发送POST请求。使用Logger.log()
语句和console.log()
语句,不断检查执行日志中的服务器错误
代码.gs
testHTML.html
函数fncGetUserTxt(){
var objUsrInput=document.getElementById('idInputForm');
/*for(OBJUSR输入中的var键){
console.log('key:'+key);
log('value:'+objUsrInput[key]);
};
*/
google.script.run
.withSuccessHandler(mySuccessFunction)
.jsGetText(objUsrInput);
//google.script.host.close()
};
函数mySuccessFunction(文本框){
警报('Success!:'+文本框);
};
如果您想使用HTML为对话框定制内容,可以使用模式和非模式类型来完成,这些类型可以挂起或不挂起服务器端代码。如果这回答了你的问题,请让我知道,我将其作为答案输入。谢谢Sandy Good,我确实尝试过,并且有一个HTML代码,其中包含一个大文本框和一个提交/取消按钮。问题是,当按下Submit键时,我无法返回文本框的值,或者无法使用文本值调用函数。知道怎么做吗?哦,好的。您需要使用注意,作为成功处理程序的函数会自动捕获函数参数部分中的返回值mySuccessFunction(argReturnGetsCapturedHere)
我尝试了一下,用我写的内容编辑了原始问题。非常感谢您的意见。谢谢
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>