如何获取Google Drive文件所有Get/Is类方法的返回结果?
动态捕获GAS File对象信息的方案
你可以利用JavaScript的对象属性访问语法,直接通过方法名字符串调用对应的get/is开头的方法,不需要依赖第三方的executeFunctionByName函数。以下是实现代码:
function logFileInfo(aFile) { const fileInfo = {}; // 获取对象的所有属性/方法名 const allProps = Object.keys(aFile); allProps.forEach(prop => { // 过滤get或is开头的方法 if (/^get|^is/.test(prop)) { try { // 通过属性访问调用方法,并保存结果 const result = aFile[prop](); // 处理无法转为字符串的结果(比如Date对象) fileInfo[prop] = typeof result === 'string' ? result : JSON.stringify(result); } catch (e) { // 捕获需要参数或执行失败的方法,记录错误信息 fileInfo[prop] = `执行失败: ${e.message}`; } } }); // 将结果输出到日志,或者转为文本 Logger.log(JSON.stringify(fileInfo, null, 2)); return fileInfo; }
关键细节说明:
- 方法调用方式:
aFile[prop]()是核心逻辑,利用JS对象的字符串索引特性直接执行对应方法,无需额外工具函数。 - 异常处理:加入
try/catch块避免少数带参数的get类方法或权限问题导致程序中断,同时记录错误原因。 - 结果格式化:对日期、对象这类非字符串结果用
JSON.stringify转换,保证内容可正常记录查看。 - 安全过滤:通过正则
/^get|^is/精准匹配无副作用的查询类方法,规避makeCopy这类会修改文件的操作。
额外优化建议:
- 若需要排除特定方法,可添加黑名单过滤:
const blacklist = ['getUnwantedMethod']; if (/^get|^is/.test(prop) && !blacklist.includes(prop)) { // 执行逻辑 } - 可以将结果写入Google Sheets,比Logger日志更适合批量查看多文件信息。
内容的提问来源于stack exchange,提问作者pgSystemTester
相关产品推荐
相关产品推荐

