如何使用Google电子表格从用户处获取文字?

时间:2015-05-14 16:28:18

标签: javascript google-apps-script

我正在尝试为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>

1 个答案:

答案 0 :(得分:0)

showDialog功能看起来不错。不要将所有代码放入onClick()属性中。从表单标记中删除method="post"。在这种情况下,您不想发送POST请求。使用Logger.log()语句和console.log()语句,并不断检查执行日志中的服务器错误。

Code.gs

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;
};

testHTML.html

<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>