如何使用Google App脚本重命名使用Google云端硬盘托管的pdf文件(在对象错误中找不到函数setName)

时间:2018-06-11 15:23:49

标签: google-apps-script google-drive-api

我正在尝试使用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'); } } 是正确的使用方法。

2 个答案:

答案 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"));
}