こんにちは!ウィスキー好きの会計士です。

まずは私が好きなウィスキーの紹介です。

こちらハイランドパーク12年になります。個人的にはこのボトルの前のボトルのほうがデザイン的によかったなと思うのですが変わらず好きなウィスキーです。なんといってもバランスがいいです。ハチミツ、程よいピート感や塩気などがすきです。

 

 

 

さて本題のGASに入りたいと思います!

実際に動かしたほうが便利さの実感がわくと思ったのでサンプルコードを載せていきたいと思います。

今回動かすGASはGmailで届いた添付ファイルを指定のGoogleDriveのフォルダに保存するというものになります。

 

事前にGoogleスプレッドシートで新規作成していただき、シート名を任意につけてください。ここでは保存とします。

シート名を変更したら図1と同様にスプレッドシートを埋めてください。

B2セルはご自身が持っているGoogleDriveのフォルダIDを記載します。フォルダIDは図2の/のあとの「1Dck5~LRAn」となっているものになります。こちらは添付ファイルの保存先となります。

 

B4セルとC4セルは届いているメールの期間(添付メールが保存されている期間にしてください)を指定します。

※注意点ですがメールは対象期間内のメールが300通まで検索できるものになりますので300通以上になりそうな場合は期間を短くしてください。保存数ではなく対象期間のメール数になります。

 

B5セルは「=TO_TEXT(B4)」、C5セルは「=TO_TEXT(C4)」関数が入っていますのでこちらを記載ください。

 

B7セルは対象となるメールの検索値になります。検索できるものとしては以下のようなものがあります。

  • ラベルを付けているものを検索する場合:「label:」
  • 送信者を指定する場合:「from:」
  • 受信者を指定する場合:「to:」
  • Ccを指定する場合:「cc:」
  • 件名を指定する場合:「subject:」

こちらの「:」の後に検索したい対象を記載してください。今回は送信者のアドレスに「@gmail.com」がついているものにしています。

複数の条件を検索したい場合は図1の「from:@gmail.com」の後に空白を1つ挿入し「from:@gmail.com subject:GoogleAppsScriptを動かす」のように記載すると対象をより詳しく指定することができます。

 

図1

図2

 

ここまで出来ましたら前回のブログをご確認いただきスクリプトエディタを開きます。

前回のブログはこちらです。

 

開きましたら図3の黄色い個所を削除します。「無題のプロジェクト」は適当な名前を入れてもらえればと思います。

 

図3

消していただいたら下記のコードをコピーして図3の「function~」と書いてある部分に貼り付けてください。

赤字の保存と記載された箇所はスプレッドシートの名前を入れてください。

-----------------------------ここから--------------------------------
function fetchFile(){
  var FOLDER_ID = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("保存").getRange("B1").getValue();
  var afterDay = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("保存").getRange("B4").getValue();
  var beforeDay = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("保存").getRange("C4").getValue();
  var searchmail = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("保存").getRange("B7").getValue();
  
  var myFolder = DriveApp.getFolderById(FOLDER_ID);
  var myThreads = GmailApp.search(searchmail + ' after:' + afterDay + ' before:' + beforeDay + ' has:attachment', 0, 300);
  var myMessages = GmailApp.getMessagesForThreads(myThreads);
 
  for(var i in myMessages){
    for(var j in myMessages[i]){
 
      var attachments = myMessages[i][j].getAttachments();
      for(var k in attachments){
        myFolder.createFile(attachments[k]);
      }
    }
  }
}

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('添付ファイルの保存').addItem('添付ファイルの保存', 'fetchFile').addToUi();
}
-----------------------------ここまで--------------------------------

コピーしましたら図3の表示の下にある保存ボタン(フロッピーディスクのマーク)をクリックして図3の保存ボタンの2つ右に再生マークあるのでクリックしてください。その際に図3のmyFunction部分をonOpenにしてください。

そうすると図4のような「承認が必要」という画面が表示されるので、続行をクリックし、アカウントの選択、許可のクリックと進んでください。

 

図4

 

その後、スクリプトエディタを閉じるとスプレッドシートのヘルプの横に図5のように「添付ファイルの保存」というメニューができますので

これをクリックするとプログラムを動かすことができます。

 

図5

 

本日はここまでにさせていただきます。

最後まで読んでくださりありがとうございます。

次回は本日のプログラムの簡単な説明をできればと思います。