如何将参数传递给Picker API?

时间:2018-07-12 12:13:53

标签: google-apps-script

我与此处讨论的问题相同:How to pass a parameter to html?

换句话说,我需要将参数传递给Picker,以便他知道我正在选择哪个文件。基于此文件类型,不同的功能将作为回调的一部分运行。

我使用的是Google提供的Picker示例:https://developers.google.com/apps-script/guides/dialogs

选择器显示以下代码:

function showPicker() {
  var html = HtmlService.createHtmlOutputFromFile('Picker.html')
      .setWidth(600)
      .setHeight(425)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi().showModalDialog(html, 'Select a file');
}

当然,现在我想将参数传递给选择器,以便它知道我要打开的文件。基于上一篇文章中提供的示例(实际上,它看起来是最好的方法),我对以下内容进行了修正:

function doGet() {
    var htmlTemplate = HtmlService.createTemplateFromFile('Picker');
    htmlTemplate.dataFromServerTemplate = { first: "hello", last: "world" };
    var htmlOutput = htmlTemplate.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
        .setTitle('sample');
    return htmlOutput;
}

不幸的是,没有出现Picker窗口。如何解决?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在HTML模板的客户端Javascript中进行处理。 Google提供的示例在加载页面时立即显示选择器,但不必一定是这种方式。

您可以将createPicker()函数绑定到客户端HTML中的事件(例如,选择列表项),然后将DOM元素的唯一ID传递给该函数。

HTML

<span id="item1" onClick="createPicker(this.id)"> Item1 </span> 

JavaScript

function createPicker(id){
  // build the picker based on the id of the item selected
}