GAS:使用默认值提示用户输入

ant*_*nio 5 modal-dialog google-api google-docs-api google-apps-script google-spreadsheet-api

考虑以下 Google 应用脚本代码:

var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
   'How many days in advance you want to receive the event notification?',
   '',
   ui.ButtonSet.OK_CANCEL);  
Run Code Online (Sandbox Code Playgroud)

我希望对话框在输入框中显示默认值。
其次,我们是否有输入/发送数据的键盘快捷键?以便用户可以点击Enter(或喜欢)接受默认值或value-Enter 发送他/她自己的值。

Kri*_*ggs 3

我没有找到解决这两个问题的方法,并且进行了很多搜索,因此最终执行了以下操作:

\n\n

在问题(对话框文本)中说明默认值是什么,如果他们想要它,请将其留空,在代码中仅使用 OR 运算符。

\n\n

如果您确实需要它,您可以使用showModalDialog(userInterface, title)提供 HTML,而不是 UI 提示。

\n\n

例如(尚未测试)。

\n\n

代码.gs

\n\n
function showTab() {\n  var html = HtmlService.createTemplateFromFile(\'modalDialog\').evaluate()\n      .setSandboxMode(HtmlService.SandboxMode.IFRAME)\n      .setTitle(\'Planejamento e controle\')\n      .setWidth(300);\n  SpreadsheetApp.getUi().showModalDialog(html, "Title") // Or DocumentApp or FormApp.\n}\n\nfunction onOen(){\n  var ui = SpreadsheetApp.getUi();\n  var fun = \'FuncoesOrcamentoV2.\'\n\n  ui.createMenu(\'Carregar controles\').addItem(\'Sidebar P&C\', fun+\'showTab\')\n  .addToUi();\n}\n\nfunction writeToSheet( servico, colNivel ){\n  var ss = SpreadsheetApp.getActive(),\n      rangeAt = ss.getActiveRange(),\n      novoRange = ss.getActiveSheet().getRange(rangeAt.getRow() + 1, rangeAt.getColumn());\n  ss.setActiveRange( novoRange );\n  SpreadsheetApp.flush();\n\n  if( servico != "" )\n    rangeAt.setValue( servico );\n\n  return "Suceffully inserted " + servico;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 modalDialog.hmtl 中:

\n\n
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.js"></script>\n<input id="autocomplete" placeholder="Digite a composi\xc3\xa7\xc3\xa3o desejada e aperte enter" >\n<input type="button" value="Inserir" onclick="escrever()" /><br><br>\n<script>\nfunction escrever(){\n    var compAtual = $( "#autocomplete" ).val();\n    $( "#autocomplete" ).focus().val(\'\');\n    google.script.run.withSuccessHandler( logga ).writeToSheet( compAtual, 3);\n}\n\nfunction logga( e ){\n    console.log( e );\n}\n\n$("#autocomplete").keyup(function (e) {\n    if (e.keyCode == 13) {\n        escrever();\n    }\n});\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n