我有一个应用脚本,可以自动保存我希望每天收到的某些电子邮件中的电子邮件附件。
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-drive-ocamlfuse
将此google驱动器连接到CentOS服务器,因为我需要保存的附件才能每天运行脚本。
直到几天前,我还没有遇到权限问题。
$ 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
仅当使用应用脚本保存文件时,才会发生此问题。当我注意到这一点时,我做了以下事情:
但是,它将失败,并且向我显示以下消息:
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
将文件移到服务器上并移到正确的文件夹中,然后我的脚本即可运行。
有什么理由会发生这种情况吗?是否有解决此问题或解决此问题的建议,以便我可以继续自动化?
谢谢。