В Google-App-Script для Google Drive, как я могу переместить определенные файлы из корня в определенную папку, если их заголовок содержит определенное слово? - PullRequest
0 голосов
/ 28 апреля 2019

Я хочу использовать Google-App-Script для перемещения определенных файлов в определенную папку, если их заголовок содержит определенное слово

Я пробовал что-то подобное, но в сообщении об ошибке говорится, что метод не определен. Любые указатели / предложения?

Это мой код:

function myFunction() {
    var searchFor ='title contains "Copyright"';
    var names =[];
    var files = DriveApp.searchFiles(searchFor);
    var destination = DriveApp.getFolderById("1xN0AUclE2t9yqlNzTwgRup3nn7G0Qsik");
    while (files.hasNext()) {
        files.next().destination.addFile(file);
}

}

Ответы [ 2 ]

2 голосов
/ 28 апреля 2019

Похоже, вы не определили переменную "файл" в вашем коде.

Вы можете либо определить его в цикле while, либо передать files.next () в качестве аргумента addFile ().

Наконец, вы должны удалить files.next () в начале строки 7, так как эта цепочка неверна и, вероятно, вызывает вашу ошибку!

Также обратите внимание, что файл не будет удален из исходной папки, но будет доступен из обоих мест. Если вы хотите удалить файл из исходного местоположения, дайте мне знать, и я отредактирую свой код, чтобы добавить это.

Попробуйте это:

function myFunction() {
  var searchFor ='title contains "Copyright"';
  var names =[];
  var files = DriveApp.searchFiles(searchFor);
  var destination = DriveApp.getFolderById("1xN0AUclE2t9yqlNzTwgRup3nn7G0Qsik");
  while (files.hasNext()) {
    var file = files.next();
    destination.addFile(file);
  }
}

или это:

function myFunction() {
  var searchFor ='title contains "Copyright"';
  var names =[];
  var files = DriveApp.searchFiles(searchFor);
  var destination = DriveApp.getFolderById("1xN0AUclE2t9yqlNzTwgRup3nn7G0Qsik");
  while (files.hasNext()) {
    destination.addFile(files.next());
  }
}
0 голосов
/ 28 апреля 2019

Обратите внимание, что ваш код не делает то, что вы говорите, он делает. А именно, он фактически не «перемещает» файлы из корневой папки в указанную папку (если это то, что вы хотите выполнить).

В Google Диске папки и файлы могут иметь более одного родителя. Думайте о папках как о «ярлыках», применяемых к файлам и другим папкам. Вызов метода addFile (file) класса Folder добавит файл в новую папку, но этот же файл также останется в своих исходных родительских папках.

Это может вызвать проблемы, так как вы можете случайно удалить файл из одной из папок, думая, что это копия, хотя на самом деле это один и тот же файл, хранящийся в нескольких папках.

Поскольку нет прямого способа «переместить» файл в другую папку на Google Диске, фактический процесс состоит из 2 шагов.

Получение списка родительских папок для файла:

var folderIterator = file.getParents();   

Добавление файла в папку назначения и удаление его из ранее сохраненных родительских папок

targetFolder.addFile(file);

//Remove from parents
while (folderIterator.hasNext()) {    
 folderIterator.next().removeFile(file);  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...