我在应用脚本中启用了Advanced Drive Service。对于Google云端硬盘中的文件,我需要设置可能已存在的元数据属性,因此我尝试使用update
Drive.Properties
方法。此方法应该“更新属性或添加它,如果它不存在”。 (见Properties: update。)
以下代码以静默方式失败(没有任何内容记录到Logger中,并且没有向该文件添加属性)。但是,如果我逐步执行这些相同的行,我确实看到每次执行catch块。
var fileId = '1jgoihblahblahblah' /* an existing file id */;
var property = {key: 'TestKey', value: 'TestValue', visibility: 'PUBLIC'}
try {
Drive.Properties.update(property, fileId, "TestKey");
} catch (e) {
Logger.log(e);
}
如果我用此行替换update
的号码:
Drive.Properties.insert(property, fileId);
...然后代码每次都有效。编写属性并通过调用Drive.Properties.list(fileId)
返回。
使用API explorer(使用实际值或上面的“TestKey”和“TestValue”示例)测试相同的值总是正常工作,所以我认为这只是提供不好的问题数据。 更新: API资源管理器现在返回错误“属性键可能只包含字母,数字和字符。!@ $%^& *()-_ / “无论我传入什么值。但是,键名中显然没有无效字符,如”TestKey“和”Link“(这是我正在使用的实际键之一)。
1)如何从脚本编辑器中解决错误?我还不知道如何检索错误文本,因为即使没有try / catch,update
也会无声地失败。
2)我使用自动完成提示指定的语法,因为实际上没有任何关于高级服务的Apps脚本语法的文档。
这种语法是否正确?如果是这样,我做错了什么,我没有看到?
答案 0 :(得分:1)
这个问题无关紧要,因为尽管它的名字,Drive.Properties.insert
做了同样的事情。