你如何从DocsListDialogue中获得选择?

时间:2013-10-13 18:40:58

标签: google-apps-script google-drive-api google-apps

我有一个docs List对话框,这是我目前为止的代码。如何从DocListDialogue获得实际选择?我继续尝试了eventInfo.parameter,但只返回了一个通用对象,我需要返回一个文件。这是我的代码:

function init() {
   var app = UiApp.createApplication().setTitle("WriteWell");
   var selectionHandler = app.createServerHandler("selectHandler");
   app.createDocsListDialog().showDocsPicker().setDialogTitle("Select File to Open").addSelectionHandler(selectionHandler);
   app.add(app.createVerticalPanel().setId("Panel"));
   return app;
 }

 function doGet(e) {
   return init();
 }

function selectHandler(eventInfo){
  var parameter = eventInfo.parameter;//Selection???
  var app = UiApp.getActiveApplication();
  var panel = app.getElementById("Panel");
  panel.add(app.createLabel(parameter.getId()));//Returns an error
}

2 个答案:

答案 0 :(得分:1)

在检查eventInfo.parameter的内容时,我们看到返回的内容如下:

{
    source=u01234567890,
    items=[
      {
        id=0Abcd-efgH_ijKLLLmnOPQr0stuvwX,
        name=file_name,
        url=https://docs.google.com/file/d/0Abcd-efgH_ijKLLLmnOPQr0stuvwX/edit?usp=drive_web
      }
    ],
    u01234567890=[
      {
        id=0Abcd-efgH_ijKLLLmnOPQr0stuvwX,
        name=file_name,
        url=https://docs.google.com/file/d/0Abcd-efgH_ijKLLLmnOPQr0stuvwX/edit?usp=drive_web
      }
    ],
    eventType=selection
}

如果您需要所选文件的ID,则需要以下内容:

...
eventInfo.parameter.items[0].id;
...

答案 1 :(得分:0)

如果您想查看eventInfo中的内容,可以使用

Logger.log(Utilities.jsonStringify(eventInfo));

在这种情况下会返回类似的内容:

[13-10-13 21:25:21:722 CEST] {"parameter":{"source":"u16052058908","items":[{"id":"0AnZ5_ShBzI6pdHd4SWo0bUJYOEp4VFE4cDI1SUFvZFE","name":"Tracker locaux","url":"https://docs.google.com/a/insas.be/spreadsheet/ccc?key\u003d0AnZ5_ShBzI6pdHd4SWo0bUJYOEp4VFE4cDI1SUFvZFE\u0026usp\u003ddrive_web"}],"eventType":"selection","u16052058908":[{"id":"0AnZ5_ShBzI6pdHd4SWo0bUJYOEp4VFE4cDI1SUFvZFE","name":"Tracker locaux","url":"https://docs.google.com/a/insas.be/spreadsheet/ccc?key\u003d0AnZ5_ShBzI6pdHd4SWo0bUJYOEp4VFE4cDI1SUFvZFE\u0026usp\u003ddrive_web"}]}}

看着它,你会看到你可以获得你想要的对象属性(例如):

var docsInfo = eventInfo.parameter.items;

将返回包含文件名,ID和URL的对象数组(每个选定文件一个)

只需迭代此对象数组即可从每个项目中获得所需内容。