毎月届くGoogle Workspaceのレシートがメールで送られてくるのですが、自動保存したくてGoogle Apps Script (GAS) を使ってみました
Google Driveから、GASのファイルを作ります
コードを書いていきます
function saveGoogleWorkspaceReceipt() {
var searchQuery = 'from:[email protected] subject:Google Workspace: is:unread'; // unreadで未開封のもの
var threads = GmailApp.search(searchQuery);
var folderId = '<folder id>'; // https://drive.google.com/drive/folders/<folder id>
var folder = DriveApp.getFolderById(folderId);
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
if (month == 0) {
month = 12;
year--;
}
var filename = year.toString() + ('0' + month).slice(-2) + '.pdf'; // 先月の年月.pdf
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var attachments = messages[j].getAttachments();
for (var k = 0; k < attachments.length; k++) {
var blob = attachments[k].copyBlob();
blob.setName(filename);
var file = folder.createFile(blob);
Logger.log('Created File: ' + file.getUrl());
}
}
}
}
folderId
は、ブラウザでGoogle Drive開いて、保存したいディレクトリを開いた時のURLの https://drive.google.com/drive/folders/<folder id>
の <folder id>
の部分です
流れは
[email protected]
から来た、タイトルが Google Workspace:
で未読のメールを探す202404.pdf
あとは、GASのファイルの上部にある実行ボタンを押すと実行されます
正しく動くか手動で検証しましょう
手動で添付ファイルを保存して、ファイル名を変えて、指定のディレクトリに保存する、がボタン一つになりました
毎月発生する作業なので、メールが届いたら、とか、毎月n日に実行するとか、もうちょっと楽にしたいですね
PR
このリンクは、アフィリエイトリンクです