GAS:提示用户输入默认值
GAS: prompt for user input with a default value
考虑以下 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);
我希望对话框在输入框中显示默认值。
其次,我们有 enter/send 数据的键盘快捷键吗?这样用户可以按 Enter(或类似的)接受默认值或按 value
-Enter 发送 his/her 自己的价值观。
我都没有找到办法,并且搜索了很多,所以最终做了以下事情:
在问题(对话框文本)中说明默认值是什么,如果他们想要它,将其留空,在代码中只使用了 OR 运算符。
如果你真的真的需要它,你可以服务 HTML 而不是 UI 提示,showModalDialog(userInterface, title).
例如(未测试)。
Code.gs
function showTab() {
var html = HtmlService.createTemplateFromFile('modalDialog').evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Planejamento e controle')
.setWidth(300);
SpreadsheetApp.getUi().showModalDialog(html, "Title") // Or DocumentApp or FormApp.
}
function onOen(){
var ui = SpreadsheetApp.getUi();
var fun = 'FuncoesOrcamentoV2.'
ui.createMenu('Carregar controles').addItem('Sidebar P&C', fun+'showTab')
.addToUi();
}
function writeToSheet( servico, colNivel ){
var ss = SpreadsheetApp.getActive(),
rangeAt = ss.getActiveRange(),
novoRange = ss.getActiveSheet().getRange(rangeAt.getRow() + 1, rangeAt.getColumn());
ss.setActiveRange( novoRange );
SpreadsheetApp.flush();
if( servico != "" )
rangeAt.setValue( servico );
return "Suceffully inserted " + servico;
}
在modalDialog.hmtl中:
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<input id="autocomplete" placeholder="Digite a composição desejada e aperte enter" >
<input type="button" value="Inserir" onclick="escrever()" /><br><br>
<script>
function escrever(){
var compAtual = $( "#autocomplete" ).val();
$( "#autocomplete" ).focus().val('');
google.script.run.withSuccessHandler( logga ).writeToSheet( compAtual, 3);
}
function logga( e ){
console.log( e );
}
$("#autocomplete").keyup(function (e) {
if (e.keyCode == 13) {
escrever();
}
});
</script>
考虑以下 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);
我希望对话框在输入框中显示默认值。
其次,我们有 enter/send 数据的键盘快捷键吗?这样用户可以按 Enter(或类似的)接受默认值或按 value
-Enter 发送 his/her 自己的价值观。
我都没有找到办法,并且搜索了很多,所以最终做了以下事情:
在问题(对话框文本)中说明默认值是什么,如果他们想要它,将其留空,在代码中只使用了 OR 运算符。
如果你真的真的需要它,你可以服务 HTML 而不是 UI 提示,showModalDialog(userInterface, title).
例如(未测试)。
Code.gs
function showTab() {
var html = HtmlService.createTemplateFromFile('modalDialog').evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Planejamento e controle')
.setWidth(300);
SpreadsheetApp.getUi().showModalDialog(html, "Title") // Or DocumentApp or FormApp.
}
function onOen(){
var ui = SpreadsheetApp.getUi();
var fun = 'FuncoesOrcamentoV2.'
ui.createMenu('Carregar controles').addItem('Sidebar P&C', fun+'showTab')
.addToUi();
}
function writeToSheet( servico, colNivel ){
var ss = SpreadsheetApp.getActive(),
rangeAt = ss.getActiveRange(),
novoRange = ss.getActiveSheet().getRange(rangeAt.getRow() + 1, rangeAt.getColumn());
ss.setActiveRange( novoRange );
SpreadsheetApp.flush();
if( servico != "" )
rangeAt.setValue( servico );
return "Suceffully inserted " + servico;
}
在modalDialog.hmtl中:
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<input id="autocomplete" placeholder="Digite a composição desejada e aperte enter" >
<input type="button" value="Inserir" onclick="escrever()" /><br><br>
<script>
function escrever(){
var compAtual = $( "#autocomplete" ).val();
$( "#autocomplete" ).focus().val('');
google.script.run.withSuccessHandler( logga ).writeToSheet( compAtual, 3);
}
function logga( e ){
console.log( e );
}
$("#autocomplete").keyup(function (e) {
if (e.keyCode == 13) {
escrever();
}
});
</script>