Google App Script LINE 投資 自動化

【GAS】米国株配当金の入金をLINEに通知

はじめに

個別株投資の楽しみの一つは配当金の入金ですよね。

少ない配当金でも、入金されたということを知ると一日楽しくなるものです。

今回は、楽天証券の配当金通知メールを受けたら、入金額をLINEに通知する仕組みを作ります。

楽天証券では、配当金通知サービスがあり、保有銘柄の配当金が入金されたことをメールで受け取ることができます。

この内容をもとにGoogle Apps Scriptを使用してLINEに通知します。

対象読者

  • 楽天証券の口座を保有している
  • 楽天証券の配当金通知メール設定において「配信希望」としている
  • 楽天証券からの配信メールにGmailを指定している
  • 配当金の入金情報をLINEで受けたい

Google App Scriptについては以下の記事を参照ください。

LINE通知の事前準備

LINEに通知するので事前準備が必要です。事前準備については以下の記事を参照ください。

あらかじめLINE notifyのトークンを取得しておく必要があります。

楽天証券の事前準備

楽天証券の配当金通知メール設定は、ログインしてから以下の画面で行うことができます。

  • マイメニュー
    • メールサービス
      • 配当金通知メール
        • 登録・変更する

お気に入りに登録されている銘柄の決算発表予定日も確認したい場合は、「お気に入り登録銘柄の配信」にもチェックを入れます。

詳細は、楽天証券の以下のサイトを確認ください。

配当金入金情報をLINEに通知する

ほとんどの処理はこれまで公開しているカレンダー自動登録と同様です。

主な違いは以下の3点です。

  • メール検索文字が楽天証券からの配当金通知サービスである
  • メール本文内容解析
  • LINEに通知するメッセージは、銘柄名と入金額です。

未処理メールの抽出

楽天証券からの積立完了メールを抽出します。

メールの抽出条件の構文は、Gmailの抽出条件に設定できる構文と同じです。

// 処理済み後に付けるラベル名(ラベルが存在しなければ自動的に作られる)
var LABEL = '自動処理済';

// GMail検索文字列
var SEARCH_QUERY = 'is:unread -label:' + LABEL + ' from:service@rakuten-sec.co.jp 配当金の入金予定をお知らせします';

配当金入金情報抽出処理

楽天証券の配当金入金通知サービスに登録すると、以下のようなメールが送られてきます。

この内容から、赤字で示している銘柄名、入金額を抽出してLINEに登録します。

配当金入金情報メール

下記銘柄の配当が入金される予定です。

■配当情報

銘柄名      :AT&T
コード/ティッカー:T
入金額      :$35.46

銘柄名      :ベライゾン・コミュニケーションズ
コード/ティッカー:VZ
入金額      :$18.39

▼配当・分配金の確認方法
ウェブログイン後、右上「マイメニュー」→「入出金・振替」→「配当・分配金」
https://www.rakuten-sec.co.jp/cgi-bin/CTS/Direct_Login.cgi?homeid=ASS_DIVIDEND_HISTORY

※ジュニアNISAの配当金は、ジュニアNISAの口座明細(精算履歴)でご確認ください。
ウェブログイン後、「ジュニアNISA」→「口座を確認する」→「口座明細(精算履歴)」

▼株式配当・分配金の入金後の資金の流れ
ウェブログイン後、右上「マイメニュー」→「口座管理」→「口座明細(精算履歴)」
https://www.rakuten-sec.co.jp/cgi-bin/CTS/Direct_Login.cgi?homeid=ASS_ADJLST

※米国株式配当・分配金は、外貨預り金に入金されるため、「外貨建て」でご確認ください。
※中国・アセアン株式配当金・分配金は円貨で入金されるため、「円建て」でご確認ください。

▼配当金通知メール設定
ウェブログイン後、「設定・変更」→「メールサービス」→「配当金通知メール設定」
https://www.rakuten-sec.co.jp/cgi-bin/CTS/Direct_Login.cgi?homeid=ACC_DIVIDEND_MAIL

※株主総会決議が必要な配当金である場合、株主総会で否決されると、入金が取消となる場合があります。

────────────────────────
このメールについてのご質問等は、楽天証券カスタマーサービスセンターまでお気軽にお問い合わせください。
楽天証券カスタマーサービスセンター
フリーダイヤル:0120-41-1004
携帯電話からは:03-6739-3333 (通話料有料)

受付時間 平日8:30-17:00(土日祝・年末年始を除く)
https://www.rakuten-sec.co.jp/web/support/
────────────────────────

以下にGmailで受信したメールの処理を示します。

  • メールのプレーンテキストをmessage.getPlainBody()で取得します。
  • CUT_STARTからCUT_ENDまでの文字を抽出し、dividendNotifyに格納します。
  • LINEへの通知は、sendline()で行います。
  • 最後に処理済みフラグをメールに付与します。
// 検索文字列
var CUT_START = '■配当情報';
var CUT_END = '※ジュニアNISAの配当金は、';
var DEL_MSG = '銘柄名';

function notifyDividendInformationToLine() {

  // 条件に合うメール検索
  var threads = GmailApp.search(SEARCH_QUERY, 0, 1);
  if (threads.length === 0) {
    Logger.log('メールが見つかりません');
    return;
  }

  for(var k in threads){
    var thread = threads[k]
    var messages = thread.getMessages();
    for (var j in messages){
      var message = messages[j];
      var body = message.getPlainBody();    // HtmlメールからPlain textの本文を取得する
      //Logger.log(body);

      var dividendNotify = '';
      var cutFlg = false;
      var rows = body.split('\n');// 1行ごとに処理するために改行で分割する      
      for (var i in rows) {
        var row = rows[i];

        if(row.indexOf(CUT_START) >= 0){
          cutFlg = true;
        }
        else if(row.indexOf(CUT_END) >= 0){
          cutFlg = false;
        }
        else if(row.indexOf(DEL_MSG) >= 0){
          // 何もしない
        }
        else{
          // 通知内容を作る
          if(cutFlg){
            dividendNotify = dividendNotify + row + '\n';
          }          
        }
      }

      // LINEに通知する
      sendLine(null, null, dividendNotify);
    
      // 処理済みメールとしてラベルを付ける
      putLabel(thread);
    }
  }
}

putLabel()関数については、下記記事のlibCtrlMailを参照ください。

LINE通知処理

LINEにメッセージを送るための前準備については以下を参照ください。

あらかじめLINE notifyのトークンを取得しましょう。

以下のコードが示すsendLine()に送信したいメッセージを渡すことでLINEにメッセージが送られます。

function sendLine(strDate, strSubject, strMessage){
   
  //Lineに送信するためのトークン
  var strToken = "<ここにLINE notifyで取得したトークンを記載します>";
  var options =
   {
     "method"  : "post",
     //"payload" : "message=" + strDate + strSubject + strMessage,
     "payload" : "message=" + strMessage,
     "headers" : {"Authorization" : "Bearer "+ strToken}
 
   };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

実行結果

LINEには以下のように通知されます。

配当・分配金の確認をしたくなるので、すぐに確認できるように楽天証券へのリンクも通知内容に含めました。

最後に

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

実際に配当金入金の知らせがLINEに入ると、ちょっと嫌なことがあっても忘れることができるくらい、テンションがあがります。

お勧めですので、お試しください。

では、今日も良い一日を。

-Google App Script, LINE, 投資, 自動化
-, , , , , , ,