スタバ Mobile Order & PayのデータをGmailから集めるGAS

  • URLをコピーしました!

スタバのMobile Order & Payのデータは、Gmailにあります。
Gmailにあれば、GAS(Googleのプログラミング)で集めることができるのです。

※スタバ Mobile Order & Pay集計後の画面

スタバ Mobile Order & Payの便利さ

スタバのMobile Order & Pay、便利です。

・スマホで注文、決済

・カウンターに取りに行く
だけで済みます。

これを使わない理由はないかと。
バリスタ(店員さん)との会話を楽しみたいというのはあるかもしれませんが。

そのときの混み具合にもよりますが、だいたいすぐ出てきますので、スタバに入って席を確保してからオーダーしても問題ありません。

ただ、このMobile Order & Pay。
経理、家計簿上は、ちょっと問題点があります。

スタバ Mobile Order & Payの経理上の問題点

通常だと、スタバでレシートをもらえます。
それを見て入力するわけです。
「レシート」があるので、忘れにくいというメリットもあります。
なくしたり、やぶれたりというデメリットもありますが。

Mobile Order & Payの場合、レシートは出ません。
だからといって、
・Mobile Order & Payを使わない
・別途レシートをもらう
というのも美しくないもの。

せっかくのデータ、ペーパーレス。
スタバのデータを取り込めたり、スタバのサイトやアプリで一覧をダウンロードできたりすればいいのですが、残念ながらできません。
世のほとんどのソフト、アプリは、経理のことまで考えてないのです。
スタバアプリで、履歴を見ることはできますが、その数は限度があり、しかも一覧では金額がわかりません。

スクリーンショットを撮って、文字データを読み取ることもできなくはありませんが。

ただ、救いはあります。
注文データがメールで来る以上、それを加工すればいいのです。

 

スタバ Mobile Order & PayのデータをGmailから抽出するGAS

Gmailをはじめとする、Googleのサービスを効率化するならGAS(Google Apps Script)。
プログラミングです。
初期設定や基本的な使い方は、こちらの動画を参考にしていただければ。

GASで、こういったGmailのデータを、

Googleスプレッドシート(GoogleのExcel)にまとめることができます。
あとは、会計ソフトなりExcelなりで処理できるわけです。
手入力する必要はありません。


コードはこういったものです。

function starbucks_data() {
//1 スプレッドシートを読み込む
  var sp =SpreadsheetApp.getActiveSheet(); 

//2スプレッドシートをクリア
  sp.clear();

//3 Gmailからスタバからのメールを抽出 

  var search_mail = GmailApp.search("Mobile Order & Pay ご注文完了",0,20);
  var mail_message = GmailApp.getMessagesForThreads(search_mail);

//4 抽出したメールから日付、金額を抽出       
  for(var i= 0,r=1;i<mail_message.length;i++,r++){

    for(var j= 0,r=sp.getLastRow()+1;j<mail_message[i].length;j++,r++){
    
      var date = mail_message[i][j].getDate();
      var Jdate = Utilities.formatDate(date, "JST", "yyyy/MM/dd");
      sp.getRange('a'+r).setValue(Jdate);          //日付
      
      sp.getRange('b'+r).setValue('会議費'); //借方
      sp.getRange('c'+r).setValue('カード'); //貸方
      
      var body = mail_message[i][j].getPlainBody(); //本文
   
      var amount = body.match(/総合計  ¥.*/)[0].replace('総合計  ¥','');
      sp.getRange('d'+r).setValue(amount);          //金額

      sp.getRange('e'+r).setValue('スタバ 会議');          //摘要
    };
  };
};

このあたりのコードを応用しています。

メルカリの購入履歴をExcelへ。GASでGmailからデータを抽出して経理。

GASで、お気に入りのメルマガを1つのシートにまとめる方法

まず、スプレッドシートを読み込んで、前回のデータが残っているといけないので、いったんクリアします。

function starbucks_data() {
//1 スプレッドシートを読み込む
  var sp =SpreadsheetApp.getActiveSheet(); 

//2スプレッドシートをクリア
  sp.clear();

次にスタバからのメールを抽出します。

件名で抽出しますので、条件を「Mobile Order & Pay ご注文完了」と指定しました。

最後の20は、20個のメールという意味。
適宜変えていただければ。

//3 Gmailからスタバからのメールを抽出 

  var search_mail = GmailApp.search("Mobile Order & Pay ご注文完了",0,20);
  var mail_message = GmailApp.getMessagesForThreads(search_mail);

抽出したメール1つ1つから、日付を読み取ります。
さらに、会計データの借方(左)、貸方(右)を任意のものに。
スタバのデータは、同じ取引パターンになるかと思います。
(以前なら、「打ち合わせ費」(お客様と打ち合わせ)、「会議費」(それ以外)に分けていましたが)

//4 抽出したメールから日付、金額を抽出       
  for(var i= 0,r=1;i<mail_message.length;i++,r++){

    for(var j= 0,r=sp.getLastRow()+1;j<mail_message[i].length;j++,r++){
    
      var date = mail_message[i][j].getDate();
      var Jdate = Utilities.formatDate(date, "JST", "yyyy/MM/dd");
      sp.getRange('a'+r).setValue(Jdate);          //日付
      
      sp.getRange('b'+r).setValue('会議費'); //借方
      sp.getRange('c'+r).setValue('カード'); //貸方
      

メールの本文からは、金額を読み取ります。
店名、商品名は、経理上必要ありません。

金額は、「総合計」を探し、ヒットしたらその1行を読み取り、「総合計 ¥」を空白に置換しています。
「総合計 ¥110」を「110」にしているのです。

     
      var body = mail_message[i][j].getPlainBody(); //本文
   
      var amount = body.match(/総合計  ¥.*/)[0].replace('総合計  ¥','');
      sp.getRange('d'+r).setValue(amount);          //金額

      sp.getRange('e'+r).setValue('スタバ 会議');          //摘要

最後に摘要(内容)を任意に入れて完成です。
適度にアレンジしていただければ。

なお、
・プライベート利用のものがあったら削除する
・メールを削除していたら、データを抽出できない
という点にはご注意を。

スタバアプリへのチャージ分を経費にする考え方もありますが、おすすめしません。
チャージしただけでは経費にならないですし。

 



■編集後記
昨日は、午前中に個別コンサルティング。
夜はZoomで極秘ミーティング。

お気に入りのカフェが時間制に。
まあ、理由はわからなくもないのですが、残念です。
家族でよく行っていたのですが。
3人で1時間いたら3,300円+ドリンクはちとつらいかなー。

1日1新Kindle『1日1新』Instagram『1日1新』
stand.fm配信
Windows365

■娘(4歳4ヶ月)日記→Kindle『娘日記』
デザートはぶどう。
最近好きで、1房食べていました。
「パパの分もあげるよ」というと、なんでー??と。
ぶどう、おいしんですけど、食べるのがめんどくさい日もあり……。

 

  • URLをコピーしました!