Blog

試してみたことを書いておく備忘録

GMailの添付ファイルをGoogle Driveに保存

お弁当アプリの概要

社内で発注するお弁当を集計するアプリを作ろうと思い、下図の構成のシステムを構築しようと思ってます。

今回やること

今回は上図のオレンジの枠内のシステムを構築します。具体的には、Gmailに添付されているPDFのメニュー表を検索し、Google Driveにメニュー表を作成します。

Google App Scriptを使うことで簡単に構築することができます。

function saveGmailAttachmentsToDrive() {
  var emailAddress = "*******@gmail.com"; // 特定のメールアドレスを指定
  var folderId = "********************"; // Google DriveのフォルダIDを指定
  var folder = DriveApp.getFolderById(folderId);
  var yesterday = new Date();
  yesterday.setDate(yesterday.getDate() - 1);
  var after = Utilities.formatDate(yesterday, Session.getScriptTimeZone(), "yyyy/MM/dd");
  
	// 前日以降のメールを検索し、Google Driveにメニュー表を作成
	GmailApp.search("from:" + emailAddress + " after:" + after)
    .forEach(thread => thread.getMessages()
      .forEach(message => message.getAttachments()
        .filter(attachment => attachment.getContentType() === "application/pdf")
        .forEach(attachment => folder.createFile(attachment))
      )
    );
}
saveGmailAttachmentsToDrive

トリガーを設定し、↑のsaveGmailAttachmentsToDrive関数を毎日実行します。

実行する関数 saveGmailAttachmentsToDrive
イベントのソース 時間主導型
時間ベースのトリガーのタイプ 日付ベースのタイマー
時刻を選択 午前0時~1時

PDFのメニュー表をGoogle Driveに保存することができました。