首页 > 解决方案 > 从 GDrive Addon 中的选择中注入文件夹 ID 并抑制 cardflip

问题描述

我正在尝试获取 gdrive 的范围,以使用我的插件从某些表单值创建文件。为此,我在清单中添加了一个处理程序并实现了相应的功能。

      "onItemsSelectedTrigger": {
    "runFunction": "onDriveItemsSelected"
  }

在函数中,我可以使用以下内容作为第一个选定项目的 ID。(我目前检查 Mimetype 以保持简单......)

    createFolderID = e['drive']['selectedItems'][0].id;

现在我有两个问题:

1. 单击 gdrive 中的文件夹时 - 事件函数似乎在等待构建的卡作为返回值。我只想通过 getparent 使用选定的文件夹(或者理想情况下是我当前“所在”的文件夹?),而不需要额外的卡。如果我返回 null,则无论如何都会在我的插件卡上方创建该卡,并显示“此消息没有显示内容”。有办法避免这种情况吗?

2. 我需要将所选文件夹的文件夹 ID 注入我的表单(我在插件开始时使用 CardService 创建的)。声明一个“全局”变量似乎不起作用,我假设云上下文不会保留变量值。我的插件创建的文档需要该值作为参数。

在用户运行插件操作之前,谁能指出我存储此文件夹 ID 的正确方向?

编辑:

/**
 * Get the selected folder to create the offer in
 */
function onDriveItemsSelected(e) {
// We check only the first selection
  if (e['drive']['selectedItems'][0].mimeType == "application/vnd.google-apps.folder")
  {
    createFolderTitle = e['drive']['selectedItems'][0].title;
    createFolderID = e['drive']['selectedItems'][0].id;
    Logger.log(e['drive']['selectedItems'][0].title + " selected. ID: " + createFolderID)
      PropertiesService.getUserProperties().setProperty('selectedFolderId', createFolderID);
  }
}

以下片段包含在清单中,用于将函数链接到选择事件。

"drive": {
  "homepageTrigger": {
    "runFunction": "initForm"
  },
  "onItemsSelectedTrigger": {
    "runFunction": "onDriveItemsSelected"
  }
}

我用它来捕捉选择事件。但是右侧的卡片会被一张空卡片覆盖,上面有我已经提到的信息。

标签: google-apps-script

解决方案


您始终可以将默认参数传递给函数。

例子:

function createForm(selectedFolderId = PropertiesService.getUserProperties().getProperty("selectedFolderId")) {
  let form;
  // Create the form
  return form;
}

参考:


更新:

当您使用OnItemsSelectedTrigger时,您必须返回一个 Card 对象数组。


推荐阅读