Gmailで受信したメール本文をスプレッドシートに転記するGASを修正 その2
以前書いたこの記事とは別のスクリプトで別のエラーが発生した。
本来抽出すべきでないメールのデータを抽出してしまう。というのが、上記の記事で発生していた困り事だ。しかし、今回は同じデータをダブって抽出してしまうのではなく、スクリプト自体の実行エラーが発生する。という事だった。
異変に気付いたきっかけはGoogleからのメールだった。
嫌なメールだな~と思いつつも、スプレッドシートに転記の過不足は無かった。このスクリプトは1時間に1回定時で実行しているため、処理の一時的な輻輳か何かでエラーになったが、次の実行で問題なく処理できた。とかか?
と考えながらも実害がなかったので放置していた。怠惰だ。
そして本日、いよいよ4通目ぐらいのメールを受信してしまった。さすがに気になるので、この機会に片づけるかと気合を入れてChatGPTに聞いてみた。
何らかの原因でエラーが発生しているので、コードを見直すかエラーログを確認すると良いよ。という提案だった。ChatGPTによると「エラーログを確認する: Google Apps Scriptのエディタで「表示」→「ログ」を選択して、スクリプトのログを確認します。」という事だったが、まず「表示」が見つからない。
そもそもその項目が無いんですが・・・と問い詰めた所、コードの中にLogger.log()が仕込まれている事が前提の案内だったとの謝罪を受けた。
あの・・・質問の段階でコード全文を貼ってるんですが・・・
この辺りがChatGPTもまだまだだなと思わせる所だが、普段から十分過ぎるぐらい役に立っているので許してやる事にしよう。
他にエラーログが見れそうな所は無いかな~と探してみた所、以下の箇所で発見出来た。
自身のアカウントのApps Scriptのトップ
↓
該当のプロジェクト名の一番右にある縦三点マーク
↓
「失敗した実行」
エラーの一覧から中身を開いて一つずつ確認してみると、定時実行のたびに同内容のエラーが発生していた。
2023/09/29 10:49:14 エラー TypeError: Cannot read properties of null (reading '1')
at [unknown function](コード:22:53)
at [unknown function](コード:16:14)
at parseMailToSpreadsheet(コード:12:11)
分かる訳がないので、当然ChatGPTに聞いてみた。
もともとのスクリプトの動きは以下のようなものだ。
件名で抽出対象の未読メールを探す
↓
本文から条件に該当する項目を抜き出してスプレッドシートに転記する
↓
処理済みのメールを既読にする
エラーログの発生時刻を見ると、抽出対象となる未読メールは存在しない時間だ。にも関わらずメールの本文が正規表現と一致しないとはどういう事か?ありもしない問題をさも問題かのように騒ぎ立てているという事か?
ライムスター宇多丸の映画評で、押井 守の「スカイクロラ」に文句を言っていた回を思い出してしまった。
当初、「Re:」が付いた返信文が抽出されてしまうが、中身は普通の文書なので正規表現と一致しない。なので、私がメールを開封するまではエラーが出続けるという事象だと考えていたが、どうやら違ったようだ。
メールの本文が正規表現と一致しないの意味はよく分からないままだが、ChatGPTがこんな提案をしてきた。
var name = /名前:(.*)様/.exec(body)[1].trim();
var nameMatch = /名前:(.*)様/.exec(body);
var name = nameMatch ? nameMatch[1].trim() : null;
実際に提案通りに修正してみた所、エラーは発生しなくなり、転記は過不足なく行われた。一件落着だがなんとなくしか事象を把握出来ていないのも気持ち悪いので、分かりやすく説明するようChatGPTに頼んでみた。
const paymentResult = regexPayment.exec(body);
const ageResult = regexAge.exec(body);
if (paymentResult && paymentResult.length > 0 && ageResult && ageResult.length > 0) {
// ...
}
なるほど。分からん。
いや、エラーが発生していた理由と発生しなくなった理由は概ね理解出来たが、抽出対象が無いにも関わらずエラーが出ていたという部分が理解できないままだ。
まぁ、エラーが出なくなってスクリプトも普通に動いてるので、特段問題なかろうという事でこの件はクローズする事にした。
この記事が気に入ったらサポートをしてみませんか?