脚本中使用的html对话框的返回值

问题描述 投票:0回答:1

我在 HTML 对话框中有一个填充了工作表名称的下拉菜单。

我需要返回在下拉列表中选择的值并在后面的脚本中使用它。

如何返回从 HTML 对话框中选择的值,以便我可以在新函数中使用它?

函数某物(返回值){ 东西 }

煤气

function getDialog() {

 var html = HtmlService.createHtmlOutputFromFile('index')
     .setWidth(400)
     .setHeight(300);
 SpreadsheetApp.getUi().showModalDialog(html, 'New Component Form');
 }


function getList() {
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i++) {
    if (sheets[i].getName()!=="FullOptionLists" && sheets[i].getName()!=="sumAppHeaders" && sheets[i].getName()!=="RawData") {
       out.push(sheets[i].getName())
    }
  }

  return out; 
}

index.html

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
</head>
  <body onload="addList()">
    <form id="Form">
      <div>
        <label for="List">Select Value:</label><br>
        <input list="dropdownList" name="list" placeholder="Choose Value" required>
          <datalist id="dropdownList">
          </datalist>
      </div>
    </form>
  </body>

  <script>
    function addList() {
      google.script.run
        .withFailureHandler(onFailure)
        .withSuccessHandler(addListValues)
        .getList();
    }

    function addListValues(values) {
      var list = document.getElementById('dropdownList');   
      for (var i = 0; i < values.length; i++) {
        var option = document.createElement("option"); // Modified
        option.value = values[i]; // Modified
        list.appendChild(option); // Modified
      }
    }

    function onFailure(err) {
      alert('There was an error!' + err.message);
    }
  </script>

<HTML>
google-apps-script modal-dialog
1个回答
0
投票

从 HTML 对话框返回值:

gs:

function launchAQuickDialog() {
  const ui = SpreadsheetApp.getUi();
  const html = HtmlService.createHtmlOutputFromFile("ah2");
  ui.showModelessDialog(html,"Get Data");
}

function saveMyNewData(v) {
  PropertiesService.getScriptProperties().setProperty("Name",v);
  Logger.log(getMyNewData())
} 

function getMyNewData() {
  let data = PropertiesService.getScriptProperties().getProperty("Name");
  SpreadsheetApp.getActive().toast(`Data:${data}`)
  return data;
}

html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <input type="text" id="txt1" onChange="google.script.run.saveMyNewData(this.value)">
    <script>
    </script>
  </body>
</html>

演示:

© www.soinside.com 2019 - 2024. All rights reserved.