Appleからの領収書で課金額を計算する

ありしま
·
公開:2024/10/30

マネーフォワードからとかある程度、把握はできるんですけど、実際どんなアイテム買ってるのかなとか、そういうの気になったので大好きGASで書いてみた。

職業病なのでスプレッドシートで管理しないと死んでしまう

スプレッドシートに書き出そう

抽出条件としてはGmailでsubjectに領収書とかいれてるんだけど、Gmailは類似するメッセージを自動的にスレッド化するというクソ便利なクソ機能がついており、スレッド単位でラベリングをすると条件が分岐してうまくいかないとうところで躓いた。

ChatGPTならなんかわかる?と思って聞いてみたんだけど、使えないメソッドを繰り返し提案してきてループするという恐ろしい事態になった

正規表現を考えるのが面倒くさい

正規表現で抜く時もAppleからの領収書のhtmlに特徴があって、たとえば1アプリのときと2アプリで請求分岐すると条件が変わる。

仕方ないからもう学園アイドルマスターとらいえもを決め打ちで抜くということに決めた

   // うたのプリンスさまっ LIVE EMOTION の情報を抽出

      var specialPassMatch = cleanBody.match(/うたのプリンスさまっ\s+LIVE\s+EMOTION\s+(.*?)アプリ内課金.*?¥([\d,]+)/);

      var specialPass = specialPassMatch ? specialPassMatch[1].trim() : null; // 抽出した文言

      var specialAmount = specialPassMatch ? specialPassMatch[2].trim() : null; // 金額

 何度も書き直して調整した結果、これで綺麗にとれる

うたのプリンスさまっ(記号なし)だと脱がされた感つよい(?)

LINENotify,サ終。Messaging APIでやる

別に定期的に手でやってもいいけど、そしたらやらないと思うからトリガーで実行させて、ついでにLINEで通知しましょうかねって久々 LINE NotifyのAPIを見に行ったら!!!!!

2016年9月から開発者の皆様に提供してまいりましたLINE Notifyですが、より良いサービスを提供するため、経営資源を後継の類似プロダクトに集中させることとなり、2025年3月31日にサービスを終了させていただくことになりました。LINEを用いた通知連携サービスとして、長年にわたり多くの皆様にご愛顧いただきましたこと、心より感謝申し上げます。

まさかのサ終でござるか!? LINEはプロダクトの整理が最近おおいね。とはいえ同じようなサービスで同じようなAPI出してたりカオスってたから仕方ないのかな。

後継類似サービスとして、Messaging APIをすすめられたのでドキュメントを読む。

公式LINEアカウントの取得が必要ってことでここでアカウントを取りました。

GASと連携させるので、デプロイしてからウェブアプリURLを取得して、Messaging APIのWebhook URLにぶちこんでおきます。

ですが、ちゃんと受け取れてるのかここだけはわからないのでLINE Developers側で詳細設定出来るのでこっちを開いて検証ボタンを連打。(連打してはいけません)

ちなみになかなか成功しなくてキレそうになった。

ようは200レスポンスを返せばいいってことらしいのだがデプロイして直接アクセスすると401とか返しててお前権限どうなってる?ってなる。

401から脱出すると、次は302の地獄が待っていた。

ボットサーバーから200以外のHTTPステータスコードが返されました。(302 Found)

LINEプラットフォームから送信されたHTTP POSTリクエストに対してボットサーバーがステータスコード200を返すことを確認してください。詳しくは、Messaging APIリファレンスのレスポンスを参照してください。

ここの最初のwebhook処理で、useridなどの情報を取得する必要があるのだけれど、その処理をいれるとエラーでループして302になってしまう。

どこでエラーになってるのがログを出そうとしても、GASで出力される実行ログでは出てこない。なんでだよ……。

おなじようなことで詰まってる時はインターネットに知見がある!!!

これだ!!!

これを参考にしてなんと無事に取得できました。

LINEでメッセージを受け取るとログエクスプローラー側から受け取ったデータを見ることが出来ます。

今回はGASからメッセージを送信するのに必要なuseridとついでに送信されたメッセージ、Display Nameとして表示名を取得しました。

https://api.line.me/v2/bot/profile/

このエンドポイントから取得できる

メッセージ送信

1ヶ月に200通まで無料でメッセージが送れます。

検証のためにGASからメッセージを叩いてみました。

バカなのでテストだけで71通も消化してしまった。

しかもおんぷくんがうんこいってるみたいになってる。

テストメッセージにうんこっていれるのはやめましょう。

その昔「しょうもねえParty」「ぬけだす」「黒崎蘭丸」っていう単語で検証してて他人に見られてなんですかこれ????って説明を求められたことがあります。

最終地点

定期的に処理前のAppleからの領収書を探しにいって、対象があると、対象を通知してきます、そしてスプシに追記して当月分の合計額を悲しげに伝えてくれます。

問題はAppleからの領収書を受け取るタイミングが課金してからだいぶラグがあるってことですね。

課金すれば出るの精神で課金しまくった後に時間差で大量にメールくるじゃないですか?

それが今度はLINEでも通知されまくり、合計額までトドメを刺しにきてくれます。

久々にGASを書きましたが、久しぶりすぎて1からだったのでクセがなくてよかったです!

@arismmn
それじゃ私、早乙女学園にいくね @arismmn