0017

【時短術2】メール件名を作業進捗として表にまとめて報告、時間短縮!

【時短術2】メール件名を作業進捗として表にまとめて報告、時間短縮!

2020.7.5

私は特定のお付き合いのある業者さんに、毎月一回私の行った作業の進捗を送っています。ですがおの進捗を送るという作業が非常にめんどくさい。

そのためなるべく自動化するための私の方法をご紹介します。

メールを使って作業の進捗をまとめる

私は普段仕事のやり取りに Gmail を使い、 自分の会社のドメインからのメールを Gmail に転送してやり取りをしています。

業者さんとのやり取りには、現実的に考えて、メールメールを使うことが大半でしょう。

そのため Gmail のラベル機能を使って作業の進捗をまとめてます。

具体的にはメールの件名を作業の進捗と兼ねるような書き方にすることです。以下に手順をまとめていきます。

メールの件名の書き方については、別途記事にします。今回は、自動化の方法を記載します。

1. 送信受信メールにラベルをつける

送信メールと受信メールにラベルを付けます。 Gmail にはフィルター機能がありますので受信した時送信した時にユニークなラベル名をつけてください。

またこのラベル名をもとにまとめる作業を行いますので、分かりやすくしておくと良いでしょう。

2. 特定ラベルのメールの内容をまとめる

特定ラベルのメールの件名と送信受信時間を Google スプレッドシートにまとめます。

3. スプレッドシートを作成

新しく Google スプレッドシートを作成し、1列目に時間、2列目にメールの件名が入るように雛形を作成します。

4. スプレッドシートのプログラムを追加

ツールメニューの中のスクリプトエディタを選択します。

以下のコードを貼り付けます。このコードはその月の1日から30日までのメールの件名と時間をスプレッドシートにまとめるプログラムです。

function writeGmailToSpreadSheet() {
  var date = new Date();
  date.setDate(1); //起動した日付の1日を取得
  var row = 2; // 1行目はヘッダ用のため、2行目から

  //シートを選択
  var sheet = SpreadsheetApp.getActiveSheet();

  //該当日の1日から今日(30日)までの情報を取得
  var searchQuery = `label:zapier after:${Utilities.formatDate(date, 'JST', 'yyyy/M/d')}`;
  var threads = GmailApp.search(searchQuery);

  for(var n in threads){
    var thread = threads[n];   
    var msgs = thread.getMessages();
    for(m in msgs){
      var msg = msgs[m];
      var maildate = msg.getDate();
      var subject = msg.getSubject();
      sheet.getRange(row,1).setValue(Utilities.formatDate(maildate, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss'));
      sheet.getRange(row,2).setValue(subject);
      row++;
    }
  }
}

5. 時間指定実行を行う

上記プログラムを入力した後、毎月30日に自動実行するよう、時間実行を指定しますプログラム画面の時計のマーク(トリガー)をクリックし以下のように設定します。

時間や日付などはお好みで設定してください。ただし上記のプログラムは1日から実行した日までのメールの件名を取得しますので、毎月30日に設定すると良いかと思います。

6. メールを送信する

上記プログラムが自動で実行された後別プログラムで特定の担当者に自動でメールを送ります。メールの文章もあらかじめしまっており、 Google スプレッドシートの表も共有する形で見れるように設定しておきましょう。

メールの送信方法については別途記事にしたいと思います。

最後に

いかがだったでしょうか。

Gmail と Google の各種オフィスアプリを使うことで意外とたくさんのことが自動化できることを発見しています。

是非毎月行っている面倒な作業を自動化して、空いた時間を有効に活用したいですね。