我正在尝试使用Google App Script重命名google驱动器文件夹中的.pdf文件。
rbind
查看此文档https://developers.google.com/apps-script/reference/drive/file#setName(String) function findFilesInFolder() {
var childrenData = Drive.Children.list('XXXXXXX')
var children = childrenData.items;
//loops through the children and gets the name of each one
for (var i = 0; i < children.length; i++){
var id = children[i].id;
var file = Drive.Files.get(id);
file.setName('testname');
}
}
是正确的使用方法。
答案 0 :(得分:2)
您混淆了文件对象。您的代码使用Drive
"advanced service"获取file metadata,并且不使用原生&#34;云服务&#34;通过DriveApp
(Drive REST API的一种实现,提供更少的功能以换取更易于使用)来获取File
- 类对象。
如果您想使用原生DriveApp#File#setName
方法,那么在您拥有相关的Drive
后,请使用Drive.Files.get
方法id
使用DriveApp.getFileById
,而不是使用DriveApp#setName
方法值:
通过for (var i = 0; i < children.length; i++){
var id = children[i].id;
var file = DriveApp.getFileById(id);
file.setName('testname');
}
更改名称:
Drive
使用for (var i = 0; i < children.length; i++){
var fileData = children[i];
fileData.title = "testname";
Drive.Files.patch(fileData, fileData.id);
}
高级服务更改名称:
position: fixed
答案 1 :(得分:1)
您必须使用API的通话。例如update。
Drive.Files.update({title: 'new title'}, id)
下一个代码应该可以正常使用。
function renameFiles_(title, newTitle) {
return Drive.Files.list({
q: Utilities.formatString("title='%s'", title)
}).items.map(function(item) {
return Drive.Files.update({
title: this.newTitle
}, item.id)
}, {
newTitle: newTitle
});
}
function test(){
Logger.log(renameFiles_("XXXXXXX", "testname"));
}