在使用DrivePicker小部件时完全丢失

时间:2017-08-21 20:32:29

标签: google-app-maker

显然,我知道如何将DrivePicker小部件拖到表单中。但在那之后,我完全不知道如何像普通的上传控件那样工作。

我有一个文本框字段,右侧有一个谷歌驱动器图标。

文本框的名称为exemptionAttachment。

google驱动器图标在OnDocumentSelect和onDocumentSelect事件中包含以下代码:widget.parent.descendants.exemptionAttachment.value = result.docs [0] .id;

所有真正发生的事情是当用户点击驱动器图标时,他们从硬盘驱动器中选择一个文件,并将文件ID放在ExemptionAttachment文本框中。

因此,在提交表格后,表格或类似物品上没有附件。也许我错过了谷歌的观点,并且该文件应该存储在某个地方的谷歌驱动器中(尽管我没有把它与应用程序同步)。

所以基本上,我在表单中上传附件方面毫无头绪。

1 个答案:

答案 0 :(得分:0)

如您所料,使用云端硬盘选取器挑选的文件应该存储在云端硬盘中,而不是应用程序中。因此,当您希望稍后通过应用程序使用这些文件时,您应该存储文件的ID或URL,而不是文件本身。

例如,我的数据源中有一个DocumentUrl字段。因此,我已将DrivePicker小部件的selectedDocUrl绑定到@ datasource.item.DocumentUrl。现在,窗口小部件将文档的URL保存到数据源中,稍后可以使用该链接。

我还使用脚本通过URL自动共享该文档,以便每个用户都可以实际访问该文档。

// DrivePicker onDocumentSelect event:    
google.script.run.setSharingByUrl(widget.selectedDocId);

Serverside脚本:

// Shares Drive file by URL in domain, with comment privileges
function setSharingByUrl(fileId) {
  var file = DriveApp.getFileById(fileId);

  // Checking if file already has edit permission, since we don't want to lower that to comment permission
  if (file.getSharingPermission() === DriveApp.Permission.EDIT){
    return;
  }
  file.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.COMMENT);
}

希望能帮助您更多地了解DrivePicker。

查看这些参考资料和样本以获得更多见解:

https://developers.google.com/appmaker/ui/widgets#drive_picker https://developers.google.com/picker/docs/reference#Feature

https://developers.google.com/appmaker/samples/drive-picker/ https://developers.google.com/appmaker/templates/document-approval