Scriptこんにちは。キャスレーコンサルティングのSI(システム・インテグレーション)部のKanemakiと申します。Scriptで、心温まる年賀状を作ろう!と過去に取り扱っていますが、今回はGoogleAppsScript(以下GAS)とラベルを活用したメール整理術をご紹介します。弊社の組織体系は私が所属しているようなSI部のような部署がいくつかあり、その中にグループが存在します。グループ全体では大体18名前後になります。キャスレーでは社員は週報をGmailに送ります。それに対して読んだ人はレスを返したり、「いいね」が出来る「いいねシステム」を活用して、普段社外で働いているメンバーと社内のメンバーとのコミュニケーションの場として活用されています。反面、メールが多くなるので、何も設定しないとグループメンバーのメールが探しにくくなってしまいます。ここで活躍するのがメールのラベルとフィルタリング機能になります。これについて一つ目としてご説明いたします。メールを探し易くするラベルとフィルタリングが出来ると次はこんな事をしたいという欲求が生まれます。・まだ週報を出していない人へのリマインドメールを自動化したいな。ルーチンワークはなるべく自動化したい。自動化することでチェック漏れや時間の節約して他の業務に専念したい。その欲求に答えるのがGASになります。これについて二つ目としてご説明いたします。ラベルとフィルタリングGmailのフィルタリングやラベルの設定にはまずGmail画面上の右上にある歯車ボタンを押して設定を選択します。設定画面が表示されたらラベルタグを押下します。[新しいラベルの作成]ボタンを押下します。すると、新しいラベルというポップアップが表示されますので「週報」と入力していきます。そのままOKボタンを押下します。すると、ベルの中に「週報」が作成されます。※「次のラベルの下位にネスト:」の項目は今回は特に設定しません。ラベルのネスト「週報」ラベルが作成されましたら、今度はその中にグループを作成します。先ほどと同じように[新しいラベルの作成]ボタンを押下します。すると新しいラベルというポップアップが表示されますので「グループ」と入力していきます。「次のラベルの下位にネスト:」で先ほど作成した週報を選択します。※チェックボックスは選択することで自動的にチェックされます。あとはOKボタンを押下します。これで以下のような構成になりました週報|-グループラベルのネストは、フォルダ機能をイメージしていただくとわかりやすいと思います。実はこのラベル、色を付けて強調することが出来ます。Gmailの画面にてラベルを表示したら、その表示の右部分に▼が表示されているかと思います。こちらで[ラベルの色]を設定するだけ!簡単ですね。フィルタリングGmailのフィルタリング機能は、ラベルと同じくGmail画面上の右上にある歯車ボタンを押して設定を選択します。ここで、[フィルタとブロック中のアドレス]タグを押下します。[新しいフィルタを作成]ボタンを押下します。ここで対象を抽出する条件を記述します。週報に対して全て週報ラベルを設定します。対象は、「宛先は週報提出用メーリングリスト」の物を選択します。To:の項目にメーリングリストアドレスを入力し、続行ボタンを押下します。次にフィルタ動作を設定します。以上で設定は終わりです。今まで受信したメールについてもフィルタする場合は、[一致するスレッドにもフィルタを適用する。以上の設定で、週報メールが全て週報ラベルに紐付きます。今度はグループラベルに設定するフィルタになります。先ほどと同じように、新規フィルタの作成を始めます。今回は週報メールの中で、メンバが送り主であるメールが対象になります。ここでは、先ほどとは異なる方法で設定しましょう。対象としてTo:に指定するのではなく[含む]に以下のように入力します。after:2016/01/01こうすることで、先ほど設定したラベル[週報]であり、かつ送り主にはメンバーとなった2016年の1月1日から受信したメールを全てフィルタする設定条件になります。※このメールアドレスは実在のものとは異なります。これで週報の中のメンバーからのメールに、グループラベルが付けられる事になります。様々なGoogleAppsのアプリケーションに独自の機能を追加するためのスクリプト言語です。GoogleAPIというイメージです。各APIについては、GAS公式に網羅されています。処理の流れとして以下のような物を考えています。・グループラベルがついたメールで一週間以内に送られていないメンバーに対してリマインドメールを送るチェック対象のメンバーのアドレス一覧について直接記述しても良いですが、メンバー変更の度にソースをメンテするのはよろしくありません。そこでGASのスプレッドシートを利用しましょう。スプレッドシートに、このようなグループアドレスを管理する物を作成します。次にGASを書いていきましょう。[ツール]から[スクリプトエディタ]を開きます。エディタにGASを書いていきます。先ほどのメールアドレスを取得する方法からです。シート内の値を取得するには、getRangeとgetValueを使用します。SpreadsheetApp.getActiveSpreadsheet();//スプレッドシート内のシートを取得します。sheet.getRange(2,1).getValue();Range(2,1)から縦方向に数セル取得する場合はgetValues()を使用します。Sheet.getRange(2,1,5).getValues();メンバーのアドレスを取得したら今度はGmailの操作方法です。Gmail内を検索するには以下のコードを利用します。GmailApp.search(クエリー);例えば・グループラベルのついた・1週間前以降に送られた・特定のメンバーが送った以上の条件でGmail内を検索するにはクエリーに対して、以下のような条件を指定します。これは、Gmailの検索でも同じように使える文字列になります。→二次元配列で格納しかし、スレッドで取得している為、週報では古いメールも含めて取得されてしまいます。そこで今度は、スレッド内のメール一つずつを取得して、日付により最近提出されたものかを判断します。※ここではわかりやすさを優先するために1スレッドに1名しか投稿されていない状態を仮定しております。false;これでメンバーの中で、週報が提出されていない人が絞り込めます。次にリマインドメールを送る方法です。メールを送るには、以下のような記述になります。body)以上で必要な部品は整いました。最後に実際に作ったコードを、参考までに以下に記載します。false;}毎週特定日に自動実行するさて最後に、先ほどの週報未提出リマインドメールを自動実行する為の設定をしていきましょう。スクリプトエディタの画面にある時計のアイコンをクリックします。トリガーというものを利用します。トリガーをクリックしましょう実行するメソッドと実行タイミングを設定しましょう。これで毎週自動実行され、対象者がいればメールを送ることができます。