Как переименовать файл PDF, размещенный на Google Диске, с помощью скрипта Google App (Не удается найти функцию setName при ошибке объекта) - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь переименовать файл .pdf в папку на диске Google с помощью Google App Script.

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 ]

0 голосов
/ 11 июня 2018

Вы должны использовать вызов 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"));
} 
0 голосов
/ 11 июня 2018

Вы путаете ваши файловые объекты.Ваш код использует Drive «расширенный сервис» для получения файла метаданных и не использует собственную «Службу накопителя» через DriveApp (реализация Drive REST API, предоставляющая меньше функций в обмен на простоту использования) для получения объекта File -класса.

Если вы хотите использовать собственный DriveApp#File#setNameметод, затем вместо использования Drive метод 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');
}

Изменение имени с помощью Drive расширенный сервис:

for (var i = 0; i < children.length; i++){
  var fileData = children[i];
  fileData.title = "testname";
  Drive.Files.patch(fileData, fileData.id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...