Google Script: ui.prompt, отправьте, нажав кнопку ввода вместо нажатия кнопки - PullRequest
0 голосов
/ 23 января 2019

Как я могу отправить ui.prompt в Google Script, нажав «ввод ключа» вместо нажатия ОК?

Код до сих пор:

function PromptBox()
{
  var spreadsheet = SpreadsheetApp.getActive();
  var ui=SpreadsheetApp.getUi();
  var prompt=ui.prompt("Filter op... ", "Geef je filterwoord op", ui.ButtonSet.OK)
  var response=prompt.getResponseText();
  var button=prompt.getSelectedButton();
  var filterTekst = "";

  if (button==ui.Button.OK)
  {
   return (filterTekst = response);
  }
  else if(button==ui.Button.CANCEL)
  {
    ui.alert("Je hebt geannuleerd");
  }
}

1 Ответ

0 голосов
/ 24 января 2019

Сверните свое собственное диалоговое окно / приглашение

Вы можете сделать это, свернув свой собственный диалог.Это шаблонный подход html, поэтому вам придется создать несколько файлов для его реализации.Нет необходимости делать это таким образом.Для меня это проще, потому что все файлы CSS, ресурсов и сценариев уже созданы, и я считаю, что проще создавать javascript в файле, а не в строке.

Код скрипта Google:

function showPromptResponse(title,prompt,placeholder){
  var title=title || "Prompt Response";//default used for debug
  var prompt=prompt || "Enter your Response";//default used for debug
  var placeholder=placeholder || "This is the placeholder";//default used for debug
  var html="";
  html+='<!DOCTYPE html><html><head><base target="_top"><?!= include("res1") ?><?!= include("css1") ?></head><body>';
  //html+='<body>';
  html+=Utilities.formatString('<h1>%s</h1>', title);
  html+=Utilities.formatString('<p>%s</p>',prompt);
  html+=Utilities.formatString('<br /><input id="resptext" type="text" size="25" placeholder="%s" />',placeholder);
  html+='<br /><input id="okbtn" type="button" value="Ok" onClick="getResponse();" />';
  html+='<br /><input id="cancelbtn" type="button" value="Cancel" onClick="google.script.host.close();" />';
  html+='<?!= include("promptscript") ?>';
  html+='</body></html>';
  var ui=HtmlService.createTemplate(html).evaluate();//This is a template
  SpreadsheetApp.getUi().showModelessDialog(ui, 'My Prompt');//launch dialog here
}

function loadResponse(resptext) {//This function determines where response is loaded into the spreadsheet.
  SpreadsheetApp.getActive().getActiveSheet().getRange('A1').setValue(resptext);
}

function include(filename){//used in the template for loading file content
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
}

Javascript в файле с именем promtscript.html

<script>
  $(function(){
    var input = document.getElementById("resptext");
    input.addEventListener("keyup", function(event) {
      event.preventDefault();//this isn't required since were not doing a submit but it doesn't seem to hurt anything so I left it.
      if (event.keyCode === 13) {//this captures the return keypress
        document.getElementById("okbtn").click();
      }
});
  });
  function getResponse(){
    var responseText=$('#resptext').val();
    console.log(responseText);
    if(responseText){
      google.script.run.loadResponse(responseText);//send response to google script
    }else{
      alert('Invalid or No Response');//response if nothing entered
    }
  }
</script>

Файл res1.html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

Файл css1.html такой:

<style>
body {background-color:#ffffff;}
input{padding:2px;margin:2px;}
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...