LINE Notifyというサービスがあります。API経由でLINEにメッセージが送れます。これをVBAから利用できればいろいろ面白いことができそうですよね。
たとえば、ExcelファイルのWorkbookOpenイベントに仕込んでおけば、ファイルが開かれたらLINEにメッセージが届きます。私はLINEに仕事関係のメッセージが来るなんて冗談じゃない派ですので絶対にやりませんが、とにかく発想次第で画期的な何かが生まれそうな予感。
とはいえ、実装までの手間がかかりすぎたらメールの方が手っ取り早いわけで、試しにやってみたところ、ものすごく簡単にできちゃったのでご紹介します。採用です。
LINE Notifyを登録する
LINE Notifyを利用するにはLINEアカウントからの登録とトークンの発行が必要です。トークンとはID兼パスワードみたいなものです。誰でも彼でもAPIからメッセージを送れたら迷惑この上ないので、リクエストに含まれるトークンが正しい場合のみAPIが処理を受け付けます。
登録とトークン発行は次の手順で行います。
1.LINE NotifyのWEBサイトhttps://notify-bot.line.me/ja/へアクセスします。
2.右上にあるログインをクリックします。
3.ID、PASSを入力する画面になるのでLINEのアカウントでログインします。
4.ログインが成功すると、右上がアカウントの登録名に変わっています(私はバリバリ本名なのでスクショでは消しています)。クリックするとメニューが展開されるのでマイページをクリックします。
5.アクセストークンの発行(開発者向け)のトークンを発行するボタンをクリックします。
6.ポップアップしたウィンドウでトークン名を適当に決めて入力します。トークン名はメッセージの頭に自動的に付きます。
7.メッセージをどこへ投稿するか決めます。試しにやるなら自分へ1:1にしておくと良いでしょう。
8.必要事項を決めると発行するボタンがクリックできるようになるので、クリックします。
9.トークンが発行されます。コピーボタンをクリックするとクリップボードへコピーされます。以降の処理でトークンを手打ちするのはハードなので素直にコピーしておいてください。注意書きにありますが、トークンを忘れると再確認はできずに一からやり直しになります。
10.登録が完了するとLINEに次のようなメッセージが来ます。
以上で準備完了です。
LINE Notify APIへリクエストする
トークンがゲットできたら、VBAでAPIリクエストを生成して送るだけです。公式リファレンスにエンドポイントのURL、必要なヘッダー、パラメータが書いてあるのでその通り組み立てます。
次のようなプロシージャになりました。
Sub lineNotify(message As String)
Const TOKEN As String = "********************************************"
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://notify-api.line.me/api/notify", False
http.setRequestHeader "Authorization", "Bearer " & TOKEN
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.Send "message=" & message
End Sub
定数TOKENをあなたが発行したトークンに書き換えてください。他はさわらなくてOKです。
引数にメッセージ本文を渡してプロシージャを実行します。たとえば
すると即座にLINEにメッセージが届きます。本当に「即座」です。1秒かからないです。メールだったらこんなレスポンスは期待できないですね。
このように、おそろしく簡単にLINEへメッセージが送れます。
あとはプロシージャーのトリガーをどうするか、どのようにメッセージを作るか、写真も送れるようなので夢が広がりんぐですね。
ソースコードをコピペしてご利用ください。
2020年2月現在、APIコール1000回/hの制限がありますので、無闇やたらにリクエストしないよう注意しましょう。その他詳細は公式サイトからリファレンスをお読みください。
公式サイト
LINE Notifyの公式サイトはこちらです。
おわり。