有人可以告诉我一种在Google App脚本中执行此操作的方法吗

迈克尔·M

我疯了。我已经发布了多个问题,这些问题都源于此。我有一个正在显示modalDialog的HtmlService。

用户从此处从下拉菜单中选择内容。然后,JS代码将数据服务器端提交到可以记录该数据的函数。

大!但是我需要能够使用从下拉列表中选择的数据从另一个函数中调用该函数。

我曾经(令人惊讶)有人来帮助我,并在这方面的不同方面为我提供了指导,但是最后,我没有得到有效的回应。

html文件:

<html>
<head>
  <base target="_top">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">

</head>
<body>
  <form>
   <select id="dropJob" name="dropdown">
     <option value=""></option>
   </select>
   <br>
     <br>  
   <input type="submit" value="Submit" class="action" onclick="sendData()" />       
   <input type="button" value="Close" onclick="google.script.host.close()" />
</form> 

<script>
  $(function() {
  $('#dropJob').val('');
  google.script.run
    .withSuccessHandler(updateSelect)
    .getSelectOptions();
  });

  function updateSelect(vA) {//this is where the dropdown gets loaded
    var select = document.getElementById("dropJob");
    select.options.length = 0; 
    for(var i=0;i<vA.length;i++)
    {
      select.options[i] = new Option(vA[i],vA[i]);
    }
  }

  function sendData(){
    var value = document.getElementById("dropJob").value;
    google.script.run.withSuccessHandler(closeIt).grabData(value);
  };
  function closeIt(){
    google.script.host.close()
  };

  </script>
 </body>
</html>

.GS文件:

function reserveItem() { 
  var response = ui.prompt("Add to Reservation","Please enter project 
  name",Browser.Buttons.YES_NO_CANCEL);       

  if (response.getSelectedButton() == ui.Button.YES) {
    var projectname = response.getResponseText();

    //Bunch of stuff-not important

  }
  else if (response.getSelectedButton() == ui.Button.NO){
    displayDropdown();
    var projectname = PropertiesService.getUserProperties().getProperty('DropJob')
    Logger.log(projectname);  
**//This is where I need that value from the dropdown**
    //build more sheets//update cells//not important
    }
}    

最后,客户端代码也从下拉菜单发送数据的功能:

function grabData(value) {
  return value;
}
库珀

这是一个非常接近您的代码的简单示例,并且可以正常工作。我从您的html开始,并修改了一些地方。

代码gs:

function onOpen() {
  SpreadsheetApp.getUi().createMenu('My Tools')
  .addItem('Start Dialog', 'startDialog')
  .addItem('grabData','grabData')
  .addToUi();
}

function startDialog() {
  var userInterface=HtmlService.createHtmlOutputFromFile('zzzz');
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'zzzz');
}

我从Sheet1 Column1获取选择选项

function getSelectOptions() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getRange(1,1,sh.getLastRow());
  var vA=rg.getValues().map(function(r){return r[0];});
  return vA;
}

function saveData(v) {
  PropertiesService.getScriptProperties().setProperty('DropJob', v);
  Logger.log(v);
  return v;
}

我记录了离开客户端的v并返回以确保得到它。而且,grapData()仅显示脚本属性的内容,用户属性也可以工作。

function grabData() {
  var data=PropertiesService.getScriptProperties().getProperty('DropJob');
  SpreadsheetApp.getUi().alert('Current Data is ' + data);
}

的HTML:zzzz.html

<html>
<head>
  <base target="_top">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">

</head>
<body>
  <form>
   <select id="dropJob" name="dropdown">
     <option value=""></option>
   </select>
   <br>
     <br>  
   <input type="button" value="Submit" class="action" onClick="sendData();" /> 

我更改了上面的按钮类型。

   <input type="button" value="Close" onclick="google.script.host.close();" />
</form> 

<script>
  var gv='';
  $(function() {
  $('#dropJob').val('');
  google.script.run
    .withSuccessHandler(updateSelect)
    .getSelectOptions();
  });

  function updateSelect(vA) {//this is where the dropdown gets loaded
    var select = document.getElementById("dropJob");
    select.options.length = 0; 
    for(var i=0;i<vA.length;i++)
    {
      select.options[i] = new Option(vA[i],vA[i]);
    }
  }

  function sendData(){
    var value = document.getElementById("dropJob").value;
    console.log('value: %s',value);
    google.script.run
    .withSuccessHandler(function(v){
       console.log('value: %s',v);
       gv=v;//if you want to pass the last selected value back to Javascript
       google.script.host.close();
    })
    .saveData(value);
  }
  

我在上面的SuccessHandler中使用了匿名函数。

  console.log('My Code');
  </script>
 </body>
</html>

有一些更改,因此请仔细查看。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人可以告诉我一种比较字符串的简单方法吗

来自分类Dev

有人可以告诉我是否可以从我的CLinfo日志中执行OpenCL吗?

来自分类Dev

有人可以告诉我此python代码有什么问题吗?

来自分类Dev

有人可以告诉我如何简化此代码吗?

来自分类Dev

如何打印此图案?有人可以告诉我条件(如果声明)吗?

来自分类Dev

有人可以告诉我此功能的实际作用吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

来自分类Dev

有人可以告诉我svg中的<g>和</ g>吗?

来自分类Dev

有人可以告诉我这个sql代码中的错误吗?

来自分类Dev

我是React的新手,有人可以告诉我为什么会这样吗?

来自分类Dev

有人可以告诉我为什么我的actionListener for循环不起作用吗?

来自分类Dev

有人可以告诉我我的Type或linq查询出了什么问题吗

来自分类Dev

有人可以告诉我为什么我的if / else陈述不起作用吗?

来自分类Dev

有人可以告诉我这段代码有什么问题吗

来自分类Dev

iOS的UIProgressView栏没有更新,有人可以告诉我原因吗?

来自分类Dev

TextGeometry没有显示,有人可以告诉我为什么吗?

来自分类Dev

有人可以告诉我这张图片有什么问题吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

有人可以告诉我为什么我不理解此示例中的范围吗?

来自分类Dev

有人可以告诉我为什么该脚本无法运行吗?

来自分类Dev

有人可以告诉我python在这里做什么吗?

来自分类Dev

有人可以告诉我如何下载wxPython Phoenix吗?

来自分类Dev

有人可以告诉我这个正则表达式吗?

来自分类Dev

有人可以告诉我DateTimeZone :: getOffset PHP函数如何工作吗?

来自分类Dev

有人可以告诉我这是什么类型的吗?

来自分类Dev

Java的新手。有人可以告诉我这是否是正确的写作方式吗?

来自分类Dev

有人可以告诉我点击网页上链接的Selense命令吗

来自分类Dev

有人可以告诉我如何在DIV中正确插入文本吗?

Related 相关文章

  1. 1

    有人可以告诉我一种比较字符串的简单方法吗

  2. 2

    有人可以告诉我是否可以从我的CLinfo日志中执行OpenCL吗?

  3. 3

    有人可以告诉我此python代码有什么问题吗?

  4. 4

    有人可以告诉我如何简化此代码吗?

  5. 5

    如何打印此图案?有人可以告诉我条件(如果声明)吗?

  6. 6

    有人可以告诉我此功能的实际作用吗?

  7. 7

    有人可以告诉我我的代码有什么问题吗?

  8. 8

    有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

  9. 9

    有人可以告诉我svg中的<g>和</ g>吗?

  10. 10

    有人可以告诉我这个sql代码中的错误吗?

  11. 11

    我是React的新手,有人可以告诉我为什么会这样吗?

  12. 12

    有人可以告诉我为什么我的actionListener for循环不起作用吗?

  13. 13

    有人可以告诉我我的Type或linq查询出了什么问题吗

  14. 14

    有人可以告诉我为什么我的if / else陈述不起作用吗?

  15. 15

    有人可以告诉我这段代码有什么问题吗

  16. 16

    iOS的UIProgressView栏没有更新,有人可以告诉我原因吗?

  17. 17

    TextGeometry没有显示,有人可以告诉我为什么吗?

  18. 18

    有人可以告诉我这张图片有什么问题吗?

  19. 19

    有人可以告诉我为什么我不理解此示例中的范围吗?

  20. 20

    有人可以告诉我为什么我不理解此示例中的范围吗?

  21. 21

    有人可以告诉我为什么该脚本无法运行吗?

  22. 22

    有人可以告诉我python在这里做什么吗?

  23. 23

    有人可以告诉我如何下载wxPython Phoenix吗?

  24. 24

    有人可以告诉我这个正则表达式吗?

  25. 25

    有人可以告诉我DateTimeZone :: getOffset PHP函数如何工作吗?

  26. 26

    有人可以告诉我这是什么类型的吗?

  27. 27

    Java的新手。有人可以告诉我这是否是正确的写作方式吗?

  28. 28

    有人可以告诉我点击网页上链接的Selense命令吗

  29. 29

    有人可以告诉我如何在DIV中正确插入文本吗?

热门标签

归档