使用Drive.Properties.update更新或添加文件属性

时间:2017-04-21 18:50:11

标签: google-apps-script

我在应用脚本中启用了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脚本语法的文档。

Autocomplete Syntax

这种语法是否正确?如果是这样,我做错了什么,我没有看到?

1 个答案:

答案 0 :(得分:1)

这个问题无关紧要,因为尽管它的名字,Drive.Properties.insert做了同样的事情。

请参阅https://issuetracker.google.com/issues/36759642