我有一个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
}
答案 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的对象数组(每个选定文件一个)
只需迭代此对象数组即可从每个项目中获得所需内容。