google-apps-script - Google 表格应用程序脚本 Onformsubmit 触发功能不允许使用 driveapp 访问文件
问题描述
我目前正在尝试让用户提交一个包含我必须处理信息的 csv 的表单。为此,我创建了一个函数来解析上传的文件,然后将其写入帮助文件或表单响应电子表格中的新工作表中。问题是,当我尝试访问使用文件 ID 上传的 csv 时,出现以下错误。我已经阅读了一些类似的问题,他们提到触发器 onformsubmit 无法授予这些权限并添加文件处理功能 a 自定义菜单,但这会导致更耗时的工作流程
*例外:您无权调用 DriveApp.getFileById。所需权限:(https://www.googleapis.com/auth/drive.readonly || https://www.googleapis.com/auth/drive)
onformsubmit 的代码如下
function onFormSubmit(e){
//Logger.log('item1' + e.namedValues['Billing data file'][0]);
//Logger.log('item2' + e.namedValues['Billing data file']);
let billingFilelink = e.namedValues['Billing data file'][0];
let billingFileId = billingFilelink.split("?id=")[1];
let file = DriveApp.getFileById("1Mg3X7xdhTUJ5N6nMR2nB5tto2F7xCUUc");
importCSVFromGoogleDrive(billingFileId)
//Logger.log(billingFileId)
}
这里是我手动添加的文件 ID,但实际上是 billingFileId。如果有更简单的方法可以做到这一点,那么得到建议会很棒
带有脚本的文件在下面共享
https://docs.google.com/spreadsheets/d/1T8Rh90-_wC86R7gvTjIOH8sas5Nz5CuGUHWz2Zv5D2I/edit?usp=sharing
解决方案
您在这里有两个选择。首先,根据第一条评论,您可以将范围添加到项目清单中的手动列表中,如此处所述。您只需要包含项目使用的任何/所有范围,包括错误中提到的范围。其次,我经常发现,当我onFormSubmit
在实际的 Apps 脚本编辑器中运行该函数时,即使该函数无法完全执行,它通常也能够获取完整的范围列表并让您以这种方式批准它们. 那将是更简单的选择,所以我会先尝试,如果失败,请尝试第一种方法。
推荐阅读
- qt - 如何在 CMake 桌面应用程序中使用/包含 qml 模块
- c# - 使用 ImageSharp 将包含 Bgra32 的传入缓冲区转换为 ImageSharp 图像的最佳方法是什么
图片? - objective-c - 如何使用 Dart ffi 表示具有 int 和字符串声明的 ObjC 枚举 AVAudioSessionPortOverride?
- java - Java中的Spark结构化流单元测试
- julia - Julia - 以编程方式生成函数数组
- rust - 用 Rust 中的孙子替换 BST 的子节点
- logging - 缺少自定义解决方案的 SharePoint 2013 ULS 日志跟踪
- c# - 在以开头的同一行中查找多个 RegEx 模式
- pdf - 自动从 Power BI 文件导出为 PDF
- django - DoesNotExist at /folder/ 用户数据匹配查询不存在。DJango 问题