Изменить Google App Script - Gmail для Google Drive - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь изменить этот скрипт, найденный здесь: https://github.com/ahochsteger/gmail2gdrive

Мне нужен скрипт, чтобы проверить, существует ли файл на Google Диске, и если нет, создайте его. В настоящее время сценарий просто создает файл в Google Диске, не проверяя, существует ли уже существующий файл с таким же именем.

Я не программист, я ничего не знаю о Google App Script (хотя мне удалось его настроить и запустил), и я ничего не знаю о JavaScript. Мне просто интересно, может ли кто-нибудь указать мне правильное направление или помочь мне написать эту нужную мне функцию?

Из того, что я понимаю (могу ошибаться), вложение создается на основе этой строки в коде:

var file = folder.createFile(attachment);

Итак, я попытался добавить это до создания файла:

var file = folder.removeFile(attachment);

Моя логика заключается в том, что если файл существует в папке, то сначала удалите его, прежде чем создавать (поэтому избегайте дублирования файлов). Но это не сработало.

1 Ответ

0 голосов
/ 09 ноября 2018

Из скрипта GitHub в вашем вопросе обнаружено, что attachment является blob. Так как насчет использования этого имени файла? Я думаю, что есть несколько решений для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них. Ход выполнения примера сценария выглядит следующим образом.

  1. Получить имя файла BLOB-объекта.
  2. Получить FileIterator, используя getFilesByName().
  3. Если FileIterator имеет значения, это означает, что файл с таким же именем файла уже существует.
  4. Если FileIterator не имеет значений, это означает, что файл с таким же именем файла не существует.

Пример сценария выглядит следующим образом.

Пример сценария 1:

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

var fileName = attachment.getName();
var f = folder.getFilesByName(fileName);
var file = f.hasNext() ? f.next() : folder.createFile(attachment);

Пример сценария 2:

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

var fileName = attachment.getName();
var f = folder.getFilesByName(fileName);
var file;
if (f.hasNext()) {
  // If the file has already been existing, you can do something here.
} else {
  //  If the file is not existing, you can do something here.
  file = folder.createFile(attachment);
}

Примечание:

  • По вашему вопросу поиск файла осуществляется из папки. Если вы хотите найти файл по всем файлам, пожалуйста, сообщите мне.

Ссылки:

Если это не то, что вы хотите, пожалуйста, скажите мне. Я хотел бы изменить его.

...