У меня есть скрипт приложения для автоматического сохранения вложения электронной почты из определенного письма, которое я ожидаю получать ежедневно.
function saveAttachments(query, folderName) {
// Get Folder from Drive to save files to
var folder = DriveApp.getFoldersByName(folderName).next();
// Query the email
var threads = GmailApp.search(query);
var messages = threads[0].getMessages();
var message = messages[0];
var mDate = message.getDate();
var body = 'File received at ' + mDate.toString();
//Save the attachment to the folder
var attachments = message.getAttachments();
var attach = attachments[0];
var gdriveFile = folder.createFile(attach);
message.markRead();
return body;
}
Я подключил этот google-диск к моему CentOS-серверу с помощью google-drive-ocamlfuse
, потому что мне нужно это сохраненное вложение для запуска сценария каждый день.
Еще пару дней назад у меня никогда не было проблем с разрешениями.
$ ll
-rw-rw-r--. 1 user1 user1 5.9K Aug 9 20:51 oldFile1.csv
-rw-rw-r--. 1 user1 user1 6.0K Aug 10 12:42 oldFile2.csv
-rw-rw-r--. 1 user1 user1 6.0K Aug 11 13:09 oldFile3.csv
-rw-rw-r--. 1 user1 user1 8.0K Aug 12 15:04 oldFile4.csv
Затем, внезапно, когда файл был сохранен (с использованием того же скрипта; больше ничего не было изменено), разрешения показались как ???????????
, что привело к сбою моих скриптов.
$ ll
-rw-r--r--. 1 user1 user1 8.1K Aug 29 14:18 file1.csv
-rw-------. 1 root root 8.1K Aug 30 13:39 file2.csv
??????????? ? ? ? ? ? newly_added_file.csv
Эта проблема возникает только при сохранении файла с использованием сценария приложения. Когда я заметил это, я сделал следующее:
- Перейдите в папку на gdrive, удалите файл.
- Перейти в корзину на gdrive, удалить файл.
- Перейдите на электронную почту и вручную сохраните файл в нужную папку.
Однако произойдет сбой, и мне будет показано следующее сообщение:
There was an error saving the attachment to Google Drive.
Это произошло только для этого файла из этого письма. Если бы я сделал копию файла на диске Google, разрешения выглядели бы нормально.
$ ll
-rw-r--r--. 1 user1 user1 8.1K Aug 31 13:39 Copy of newly_added_file.csv
??????????? ? ? ? ? ? newly_added_file.csv
Итак, в Google Диске я удалил исходный файл, переименовал копию в оригинал и снова проверил на своей машине и ОПЯТЬ, фанк-разрешение!
$ ll
??????????? ? ? ? ? ? newly_added_file.csv
Затем я попытался сохранить файл локально на моем компьютере, затем использовал scp
, чтобы переместить файл на сервер и в нужную папку, и мой сценарий смог запустить.
Есть ли причина, по которой это могло бы произойти? Есть ли какие-либо предложения, чтобы исправить эту проблему или обойти эту проблему, чтобы я мог продолжить свою автоматизацию?
Спасибо.