在弹出窗口中创建下拉菜单(Googlescript)

时间:2016-09-14 03:19:33

标签: google-apps-script google-sheets

我有多张表(同一工作簿)中的记录列表。 我目前在googlesheet中有一个下拉菜单,如果你选择其中一个记录,它将删除该记录的行。 但是,我想提供将其移动到另一个工作表或删除它的选项。我试图使用UiApp,但后来发现很多选项已被弃用,现在我必须使用HTMLService。 所以我要做的是,一旦我选择了一个记录,就有一个有两个选项的弹出窗口。 选项1:移动选项(按钮),其中包含工作簿中其他工作表的名称下拉列表,然后将该记录移动到该工作表 选项2:删除记录 选项3:取消。

这可能吗?如果是这样,有人能指导我到正确的方向或类似的例子,所以我可以尝试找出如何实现这一目标吗?

提前谢谢你们!

1 个答案:

答案 0 :(得分:0)

您可以尝试创建Custom dialogs

  

自定义对话框可以在Google文档,表格或表单编辑器中显示HTML服务用户界面。

     

在对话框打开时,自定义对话框不会挂起服务器端脚本。客户端组件可以使用用于HTML服务接口的google.script API或用于UI服务接口的服务器处理程序对服务器端脚本进行异步调用。

Code.gs

function onOpen() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .createMenu('Custom Menu')
      .addItem('Show dialog', 'showDialog')
      .addToUi();
}

function showDialog() {
  var html = HtmlService.createHtmlOutputFromFile('Page')
      .setWidth(400)
      .setHeight(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(html, 'My custom dialog');
}

page.html中

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <select>
       <option>Delete</option>
       <option>Move</option>
    </select>
  </body>
</html>

enter image description here 有了这个,请尝试阅读HTML Service: Communicate with Server Functions

  

google.script.run是一个异步客户端JavaScript API,允许HTML服务页面调用服务器端的Apps脚本功能。以下示例显示了来自客户端JavaScript的 google.script.run - calling a function on the server的最基本功能。

以下是表单的示例代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      // Prevent forms from submitting.
      function preventFormSubmit() {
        var forms = document.querySelectorAll('form');
        for (var i = 0; i < forms.length; i++) {
          forms[i].addEventListener('submit', function(event) {
            event.preventDefault();
          });
        }
      }
      window.addEventListener('load', preventFormSubmit);

      function handleFormSubmit(formObject) {
        google.script.run.withSuccessHandler(updateUrl).processForm(formObject);
      }
      function updateUrl(url) {
        var div = document.getElementById('output');
        div.innerHTML = '<a href="' + url + '">Got it!</a>';
      }
    </script>
  </head>
  <body>
    <form id="myForm" onsubmit="handleFormSubmit(this)">
      <input name="myFile" type="file" />
      <input type="submit" value="Submit" />
    </form>
    <div id="output"></div>
 </body>
</html>

希望这有帮助!