GASでメールをシートに自動転記するとき検索結果をそのまま処理してはいけない話

GASでメールをシートに自動転記するとき検索結果をそのまま処理してはいけない話

記事
IT・テクノロジー

予約やキャンセルの通知メールを、スプレッドシートに1行ずつ自動で書き写す。GASでよく頼まれる自動化のひとつです。ココナラの依頼一覧を見ていても、「Gmailに届く通知を読み取ってシートに転記したい」という募集が何度も出ていました。

僕もサンプルとして同じものを作りました。そのときに一度、危ないところで手を止めたことがあります。

件名で検索すれば済むと思っていた


最初に考えたのは、Gmailを件名で検索して、見つかったメールを順番にシートへ書き写すやり方です。サンプルの通知メールは件名が「【予約受付】」「【キャンセル受付】」で始まるので、その言葉で検索すれば対象のメールだけが拾えると思っていました。

ところが、Gmailの検索は言葉をばらして探します。「予約受付」で検索すると、件名のどこかにその言葉が含まれるメールが広く引っかかります。実際に、普段届いている「予約受付完了」や「予約販売」といった件名のメールまで候補に入っていました。

そのまま動かしていたら、関係のないメールの中身がシートに書き込まれ、そのメールにも「転記済み」のラベルが付いていたはずです。動かす前に気づいたので、このときは何も書き込んでいません。

検索は候補集めだけにした


直し方はシンプルです。検索は「候補を集める」ためだけに使い、そのあとで件名が決まった形で始まっているかをプログラムの中でもう一度確かめます。「【予約受付】」か「【キャンセル受付】」で始まるメールだけを処理して、それ以外は触りません。

取り込んだメールには「転記済み」のラベルを付けて、次に動かしたときに同じメールを二重に書き込まないようにしています。キャンセルのメールが来たら、元の予約の行を探してグレーにします。

直したあとに見本のメール3通で動かすと、予約2件が追加され、キャンセル1件が反映されました。ラベルが付いたのも見本の3通だけでした。

依頼を受けるときも同じことを守ります


メールの自動転記は、動き始めると毎日勝手に処理が進みます。最初の条件が甘いと、気づかないうちに関係のないメールまで巻き込みます。だから依頼を受けるときも、まず実際に届いている通知メールの件名を見せてもらい、どこまでを対象にするかを決めてから作ります。

ココナラでは、こうしたスプレッドシートの自動化を3,000円から受けています。購入前に中心の部分だけ無料で試作して、動かす前と後の画面をお見せします。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す