サイトアイコン わんすけに聞いてみる

[GAS]受信メールの添付ファイルをドライブに保存

前回の記事で、簡易OCR機能はやはりGoogleドキュメントが優秀だなーって再認識した。

簡易OCRの比較 Microsoft OneNote vs Googleドキュメント

 

なので、今日はGoogleドライブに保存されたイメージファイルをGoogleドキュメントとして開くというのをより有効活用できるようなApps Scriptを思いついて書いてみた。

全体のイメージとしてはこんな感じ。

以前に紹介したBizFAXスマートキャストというサービスを使うと、FAX受信もPDFでメール受けできるらしい。(X社とかなら複合機でもメール連携はできそうだけども。)

それをGmailで受けてFrom番号でフォルダ振り分けつつGoogleドライブに自動保存して、そこから右クリックのGoogleドキュメントで開くってやるとすごくスムーズに簡易OCRを使えるのでは?って思った次第です。

BizFAXスマートキャスト(Mail to FAX)へVBSで送信

 

1.添付ファイルを保存するフォルダを作る。

まずは、添付ファイルの保存先になるフォルダをGoogleドライブ上に作っときます。

今回のサンプルではこんな感じにテキトーに用意した。

で、それぞれのフォルダをブラウザで開いてURLからフォルダIDをメモに控えておく。

 

2.保存先判断のスプレッドシートを用意する。

次に、本文キーワードと控えたフォルダIDを紐づけるスプレッドシートを新規に作る。

で、このスプレッドシートはApps Scriptから参照するから、これまたシートIDはURLから控えておく。

 

3.Google Apps Scriptを書く。

今回のケースでは、「件名+未読」でメール検索して添付ファイル保存が完了したらそのメールを既読に設定しています。

以下のスクリプトを張り付けて、2か所を編集する。

function myFunction() {
  getPdfFromMailAttachToDrive();
}

function getPdfFromMailAttachToDrive(){
  const mlthread = GmailApp.search('is:unread subject:"【ご希望のメール件名】"');
  for(let thd of mlthread){
    const msgs = thd.getMessages();
    for(let msg of msgs){
      let fldrID = getFolderIdFromMsg(msg.getBody());
      let folder = DriveApp.getFolderById(fldrID);
      let atchs = msg.getAttachments()
      for(let atch of atchs){
        folder.createFile(atch);
      }
      GmailApp.markMessageRead(msg);
    }
  }
}

function getFolderIdFromMsg(mlbody){
  var spreadsheet = SpreadsheetApp.openById('【ここにスプレッドシートID】');
  var sheet = spreadsheet.getSheetByName('folderlist');
  let lastR=sheet.getLastRow();
  for(let r = 2;lastR;r++){
    let fax = sheet.getRange(r, 1).getValue();
    if(fax == "other" || mlbody.indexOf(fax) != -1){
      return sheet.getRange(r, 2).getValue()
    }
  }
}

あとはデバッグボタン押してパーミッション設定したら、トリガー設定で何分かごとで動くように設定すれば自動メール添付ファイル振り分けドライブ保存は設定完了です。

 

思い付きで適当に書いたけど、コレもしかして便利じゃね????

モバイルバージョンを終了