概要
Gmailへの添付ファイルを自動でGoogleDriveに格納する仕組みの作り方についてご紹介致します。
今回は例として、AdobeSignの証明済み契約書書類が自動でGoogleDriveに格納されるようにしていきたいと思います。
全体の流れのイメージ
- AdobeSign経由のメールが自動で「AdobeSign-未処理」フォルダに格納される
- GASで定期的に「AdobeSign-未処理」フォルダ内のメールにクエリをかけ、GoogleDrive転記処理を行った上で、処理が成功した場合に当該のメールが「AdobeSign-処理済」に移されるようにする。
開発の流れのイメージ
- 「AdobeSign」・「未処理」・「処理済」のラベルを作成する。(※未処理と処理済のラベルはAdobeSignにネストされる。)
- AdobeSignからの署名済み契約書書類が添付されたメールに自動で「AdobeSign-未処理」ラベルが付けられるよう、「メールの自動振り分け設定」を行う。
- 「AdobeSign-未処理」ラベルの付いたメールに関して、添付されている契約書書類をGoogleDriveに自動格納し、「AdobeSign-処理済」ラベルに付け変えるGASを記述する。
手順1(ラベル作成)
①「画面上部のラベルマーク>新規作成」の順にクリック
②ラベルを作成
手順2(メールの自動振り分け設定)
①「メール右上の設定アイコン>メールの自動振り分け設定」の順にクリック
②AdobeSign経由であることを一意に確定する情報を入力し、「フィルタを作成」をクリック
③アクションを指定して、再度「フィルタを作成」をクリック
手順3(GASの作成と記述)
①スプレッドシートを作成する
②ツールからスクリプトエディタを起動
③プロジェクト名をクリックして、プロジェクト名を変更
④下記のコードをコピペ(環境に合わせてコード編集してください。)
function AdobeSignFileUploader() {
//変数準備
var target_folder = DriveApp.getFolderById('ここにフォルダidを入力!');
var query_condition = "label:AdobeSign/未処理";
//処理対象メール取得
var threads = GmailApp.search(query_condition);
var messages = GmailApp.getMessagesForThreads(threads);
if(messages.length > 0){
for(var i = 0; i < messages.length; i++) {
for(var j = 0; j < messages[i].length; j++) {
var attach = messages[i][j].getAttachments();
for(var k = 0; k < attach.length; k++){
target_folder.createFile(attach[k]);
}
}
var label1 = GmailApp.getUserLabelByName('AdobeSign/未処理');
var label2 = GmailApp.getUserLabelByName('AdobeSign/処理済');
threads[i].removeLabel(label1);
threads[i].addLabel(label2);
}
}
}
※フォルダIDは下記画像のように、該当のフォルダを開いている画面のURL欄から取得できます。
⑤「時計アイコン」をクリック
⑥ロジックを走らせるタイムトリガを設定し、保存