google-apps-script - 从 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"
}
}
我用它来捕捉选择事件。但是右侧的卡片会被一张空卡片覆盖,上面有我已经提到的信息。
解决方案
您始终可以将默认参数传递给函数。
例子:
function createForm(selectedFolderId = PropertiesService.getUserProperties().getProperty("selectedFolderId")) {
let form;
// Create the form
return form;
}
参考:
更新:
当您使用OnItemsSelectedTrigger时,您必须返回一个 Card 对象数组。
推荐阅读
- .net - ICACL 权限如何映射到 FileSystemRights
- javascript - setTimeout [回调必须是函数] 错误
- javascript - 将内容的高度拉伸到整个页面
- javascript - React-Redux:单击按钮时获取方法
- c# - 在此示例中需要帮助识别类/原始实例变量
- html - 滑动时引导轮播滚动顶部
- node.js - 使用 nodejs 和 mailgun 发送电子邮件时出错
- android - 如何测试从 Kotlin 中的函数返回的 lambda
- php - 如何根据复选框限制选择框选项?
- javascript - Node express 中间件有未定义的输入