代码之家  ›  专栏  ›  技术社区  ›  Simon Breton

如何用Google应用程序脚本重命名Google Drive托管的de pdf文件(在对象错误中找不到函数setname)

  •  0
  • Simon Breton  · 技术社区  · 6 年前

    我正在尝试用谷歌应用程序脚本重命名谷歌驱动器文件夹中的.pdf文件。

    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');
        }
      }
    

    看这个医生 https://developers.google.com/apps-script/reference/drive/file#setName(String) setName 是正确的方法。

    2 回复  |  直到 6 年前
        1
  •  2
  •   tehhowch    6 年前

    您混淆了文件对象。您的代码使用 Drive "advanced service" file metadata ,并且不使用本机“驱动器服务”通过 DriveApp File -类对象。

    DriveApp#File#setName 方法,而不是使用 Drive.Files.get 使用 DriveApp.getFileById id

    DriveApp#setName

    for (var i = 0; i < children.length; i++){
      var id = children[i].id;
      var file = DriveApp.getFileById(id);
      file.setName('testname');
    }
    

    for (var i = 0; i < children.length; i++){
      var fileData = children[i];
      fileData.title = "testname";
      Drive.Files.patch(fileData, fileData.id);
    }
    
        2
  •  1
  •   contributorpw    6 年前

    您必须使用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"));
    }