このベージは
・エクセルとLINEを連結するやり方
が書かれています
こんにちは、しょーい(@showilog)です。
前回に引き続き、twitter上で公開した動画の中から
便利なVBAマクロをご紹介します。
コチラの動画の20秒あたりで説明した
エクセルからLINEにメッセージを送る機能
を紹介します
事前準備
今回はLINEに通知するために、web上のサービスを利用します
LINE Notifyというwebサービスです。勿論無料です
通知させたいLINEアカウントでログインしてください。
VBAコードはこちら
Sub lineテスト送信() Dim objHTTP As Object Dim LineStr As Variant Dim SndMsg Dim Token SndMsg = "★こちらに通知したい文章を入れる★" Token = "★トークンを貼り付ける場所★" LineStr = "message=" & SndMsg Set objHTTP = CreateObject("MSXML2.XMLHTTP") objHTTP.Open "POST", "https://notify-api.line.me/api/notify", False objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTTP.setRequestHeader "Authorization", "Bearer " & Token objHTTP.Send LineStr End Sub
これだけです。めちゃ短いですね。
複雑なことは全てLINE Notifyが処理してくれるので、★印の部分だけ設定すればOKです
ここで【トークン】という聞き慣れない言葉がでてきました
LineNotify側の設定が必要になってくるのですが、後ほどそちらの説明をします
コードの説明
基本的にいじる部分は★で囲まれた所だけです
SndMsgに送りたい言葉を入れる
トークンに設定した文字列を入れる(後ほど説明)
これだけです!簡単ですね。
11行目以降のコードは深く考えなくて大丈夫です
私も詳しくはわかりません。こういうものなんだなぁと思って使ってます
もっとVBAレベルが上がったらまた解析しに来ましょう
LINE Notifyの設定方法
トークンの部分を説明するためには、Notify側の設定をすればわかります。
今回のマクロはコードが短い分、LINE Notifyの設定をしっかりしないと全く起動しません。
手順を追って1つずつ説明しますので、ここを見れば問題なく設定できるはずです
※PCからの操作画面で説明しています
1.LINEアカウントでログイン
ご自身が持っているLINEアカウントでLINE Notifyにログインしてください
LINEにログインするIDとパスを使えば、そのまま入れます
入れない方はLINE側でIDとパスを確認しましょう
2.マイページに移動
ログインしたら、画面右上にある名前横の記号をクリック
タブが開くので「マイページ」をクリックしてください
3.アクセストークンの発行ボタンを押す
マイページに飛んだら、ページ一番下にある【トークンを発行する】ボタンを押します
4.題名と通知先を選ぶ
上に記入する部分は、エクセルからLINEに通知する際に表示される題名のようなものです。入力しないと先に進めないので、なにか文字を入れといてください
そして、下の選択するものは通知する場所を選びます。
今回のLINE Notifyの機能は自分1人かトークルームのみにしか通知できません。
自分に通知したい場合でしたら問題ないですが、第三者に通知したい場合は事前にトークルームを作成しておきましょう。
※複数人での会話していても、トークルームを作っていないとダメなので作成し直しましょう
今回は自分ひとりに送る設定なので、一番上の
「1:1でLINE Notifyから通知を受け取る」を選択します
文字が緑になってれば選択状態です
※トークルームに通知したい場合は、ルーム名を選べばOKです
そして、下の「発行する」ボタンを押しましょう
ボタンを押すとトークンが発行されます。
赤文字のよくわからん文字列がトークンです
LINEとエクセルをつなぐためのパスワードのようなものですね
ここで必ずトークンをコピーして、先程のコード部分に貼り付けましょう
ページを開きっぱなしにしておいても良しです
表示されたトークン画面を閉じると二度と表示されません
もう一回発行し直す必要がありますので注意しましょう
再度作り直しても問題はないですが、また同じ作業をするのは面倒なので気をつけましょう。
これでLINE Notify側の設定は終わりです。
5.トークルームにLINE Notifyを招待する
自分だけに通知する場合はこの設定は必要ありません
トークルームに通知する場合は必須です
トークルームにLINE Notifyを招待しましょう
※LINE Notifyが友達になってないと招待できませんので、先に友達になっておきましょう
広告などの通知は一切ありませんのでご安心を
トークルーム内ではLINE Notifyアカウントがエクセルからの通知をつぶやいてくれますので、招待は必須になります
招待した瞬間に入室してくれます
実行結果
先ほどのマクロを起動します
通知したい文字を【テーストだよー】にしてマクロを実行します
問題なく通知できてますね
シンプルですが、エクセルを外部のシステムと連携できる素晴らしいマクロです
これだけは注意!!
カスタマイズするのは自由ですが、【無限ループバグ】だけは気をつけてください
永遠終わらない通知がLINEに流れます。
10000件とか平気で通知し続けます
自分一人なら問題ないですが、トークルームでやらかすとただのテロ行為になってヒンシュクしか買いません。そこだけは充分に気をつけてください
有効的な使い方
今回はかなり単純な仕組みなので、このままだと使い物になりません
マクロを起動したときにLINEに特定の文字を通知するだけなので、相当限定的な場所でないと使われないと思います
また別の記事で便利な使い方を説明します
カスタマイズ次第で無限の可能性があります
もしこんな風に通知したい!というご意見があればコメント欄に記載か、ツイッターにDM送ってください
やり方を説明した記事をUPいたします
Excelで在庫管理をしたくて、在庫が〜個以下になったら自動でLINEに通知といった機能を実装したいです。
もし、よろしければアップしていただけると嬉しいです。よろしくお願いします!
コメントありがとうございます!
1週間以内にアップしますのでお待ちください!
コメント失礼します。
ログインが必要なWebサーバー上にあるWebページのデータ(日ごとにデータが更新されるもの)をExcel又はスプレッドシートに取得して、そこからLINE NotifyやGASを使って、LINEでメッセージ送信するということをやりたいと思っています。
しかしWebページから日ごとに変わるデータを取得するという工程でどうするのがいいのか詰まっております。
データというのはサーバーに所属している個人個人のその日ごとの生活統計みたいなもので、毎日提出するのを義務化しています。そのため例えば20時時点で未提出の人がいる場合、Webページからデータを取得した際に未提出の人をリストアップしてLINEに通知したいということです。
なにかいいやり方などありましたら、メールの方で教えていただけると嬉しいです。
長文失礼いたしました。。
コメントありがとうございます!
昔同じような業務を行っていました。私の場合は
ブラウザ上でデータダウンロード→そのまま集計エクセルにコピペ→置換とかして修正→事前に作成したフォーマットに表示される
という感じでした。これはマクロで自動化できたのでsanさんも同じことが出来ると思います。
基本はスクレイピング操作です。
・エクセルマクロでwebページログイン(ID/PASSを自動入力)
・最新のデータがあるページに飛ぶ(ボタンクリックorURL指定)
・データダウンロードorwebページコピペ
・ローカルエクセルに貼り付け
という流れでいけるはずです!
その跡にLINEAPIで連携、通知でどうでしょうか?
エクセルVBAでコンピューター3人対プレイヤーのカードゲームを作ったのですが、友人からネット対戦できるようにしてくれと言われました。
4人のライントークグループを作ってそこから各プレイヤーのカード情報などをチャットみたいにやり取りできれば、(どのプレイヤーがどのカードを捨てたとか)対戦ゲームにできるのではと思うのですが、自分の捨てたカードをライングループに投稿できても、他のプレイヤーの捨てたカードをラインから取得することはできるのでしょうか?
コメントありがとうございます!
VBAのカードゲーム…!すごいですね!
ネット対戦となると、同じエクセルをコピー共有して、それぞれが立ち上げるってことですよね。
LINE notifyですと、エクセル→LINEの情報は飛ばせても、LINE→エクセルに情報を集約するのは出来ませんで、簡単に実装は出来なさそうです。私が考えるパターンとしては
・エクセルを共同編集可能状態にする。同じエクセルを起動する。
(共有フォルダ等の用意が必要)
シート1→プレイヤー1、のようにシート毎に情報を分ける。
※普段共同編集機能を使わないので、実現できるかはわからないです
・エクセルではなく、スプレッドシート前提ですが、LINEに送った情報を受け取れる「LINE デベロッパー」を使う。LINE上に通知された情報を受け取り山札と捨て札の管理ができるかと思います。
ぐらいでしょうか…。普段VBAでゲームや面白い機能を作ったりしないもので、中々お力になれなそうです。
けど、VBAでゲーム作れる人はほんとに尊敬します!見てみたい!
返信ありがとうございます。
オンライン対戦は、なかなか難しそうですね。
API関連の勉強をしているとJavaやRubyや・・・苦手なイメージでしたが、VBAでLINEにメッセージを送ることが出来るとは!?
一気に身近に思えて感激しました。
次は、LINE WORKSへメッセージを送る方法についても紹介頂けると嬉しいです!
(LINE WORKSのAPIが最近2.0になったようなのですが、参考にできるサイトがまだないんですよね・・・)
コメントありがとうございます!
他の言語よりはやりやすいので使いやすいと思います。
LINE WORKSですね。あちらはユーザー権限とかが関わってきたと記憶しています。
今度まとめたいと思います!