こんにちは。保育園からくるメールに気付かない事が多く、朝保育園に行ったらお休みという事がたまにあるので、LINE通知をして気付きやすくするのと家族で共有するようにしました。
「LineNotify」と「Google Apps Script」を使って簡単に実現出来ます。
LineNotifyでアクセストークンの取得
LineNotify(https://notify-bot.line.me/ja/)よりマイページを選択して、「トークンを発行する」からアクセストークンを取得します。
トークンは一度しか表示されないので忘れないようにメモします。
Google Apps Scriptにてソース作成
Google Apps Script(https://script.google.com/home)より新しいプロジェクトを作成します。
以下ソースをコピーします。
最初の3行を書き換えて下さい。
Google Apps Scriptにてトリガー作成
[表示]-[現在のプロジェクトのトリガー]を選択します。
トリガーの作成を選択し、以下設定を行います。
ソースの「var get_interval = 30;」部分と赤枠部分を合わせておきます。
ちなみに、トリガーを登録しようとすると、「このアプリは確認されていません」と出ました。対処方法を詳細に記載されているサイトをご紹介させて頂きます。
https://tonari-it.com/gas-script-approval/
これで終わりです。とても簡単!!
2020/07/21追記 エラー:その操作を実行するには承認が必要です。
数日前から「その操作を実行するには承認が必要です。」のエラーメールが届くようになりました。
特にパスワードも権限系の設定も変えた覚えもないんだけど、、と思い調べたところ最近同様のケースが発生しているようです。
https://teratail.com/questions/278164
以下設定画面で「Google Apps Script API」がオフになっていたので、オンにしました。こんなのあったかなー。仕様追加されたんですかね。
https://script.google.com/home/usersettings
これだけだとエラーが解消されないので、次に関数を実行します。
すると以下メッセージが出てくるので、「許可を確認」を選択するとアカウント選択画面が表示されるので、アカウントを選択します。
次に「このアプリは確認されていません」が表示されるので、小さい文字の「詳細」をクリックします。
「安全ではないページに移動」を選択すると
リクエストを許可して完了です。
コメント
コメント一覧 (13件)
現在、地元の消防団の出動命令で使わせていただいております。
今までメールでのみ、通知が来ていたので、気が付くのに時間がかかっておりました。
大変、感謝しております。
ところで、場所の通知が「&」のところで切れてしまいます。
(メール)
下記をクリックすると地図を表示します。
http://map.navitime.jp/?datum=1&lon=142.21.42.16&lat=43.45.44.83&nam=&cp=fgss
(LINE通知)
http://map.navitime.jp/?datum=1&
原因を特定できますでしょうか
カズヒロさま
コメントありがとうございます。
素晴らしい用途ですね!!
URLが&で切れるという事ですが、私の環境でも同じ現象が発生しました。URLをencodeURIComponentでエンコードしたら解決すると思います。URLだけ切り出すのが面倒だったので、メッセージ全体をエンコードしたんですけど、私の環境では問題なく通知出来ました。
具体的には22行目の下に以下を追加します。
var strMessage = encodeURIComponent(strMessage);
上手くいくといいですね!
動作確認できました!!!
&でメッセージが切れてしまうって、不思議な現象でしたが、無事解決しました。
これで場所が簡単に確認できるようになりました。
ありがとうございます!
何度もすみません。
以前ご指定いただいたように、22行目の下(23行目)にエンコード用の一文を追加していると思うのですが、「&」以降が切れてしまっています。
大変申し訳ありませんが、もう一度教えていただけないでしょうか。
for(var i in myMessages){
var lastNo =myMessages[i].length-1;
var strDate = Utilities.formatDate( myMessages[i][lastNo].getDate(), ‘Asia/Tokyo’, ‘M/d HH:mm’);
var strSubject = myMessages[i][lastNo].getSubject();
var strMessage = encodeURIComponent(strMessage);
var strMessage = myMessages[i][lastNo].getPlainBody().slice(0,500);
//LINEにメッセージを送信
sendLine(strDate,strSubject,strMessage);
//メッセージを既読にする
myMessages[i][lastNo].markRead();
}
カズヒロさま
コメントありがとうございます。お返事が遅くなってすみません。
ソースを変えてないのに、突然そうなったのか、ちょっと状況がよくわかりませんが、貼り付けてもらったソースを見る限り、encodeURIComponentをする位置が違うように思います。
ご返信ありがとうございます。
具体的には
22行目を
var strSubject = myMessages[i][lastNo].getSubject();var strMessage = encodeURIComponent(strMessage);
または、
23行目を
var strMessage = encodeURIComponent(strMessage);myMessages[i][lastNo].getPlainBody().slice(0,500);
または、
22行目 var strSubject = myMessages[i][lastNo].getSubject();
23行目 var strMessage = encodeURIComponent(strMessage);
24行目 var strMessage = myMessages[i][lastNo].getPlainBody().slice(0,500);
のいずれなのでしょうか。
カズヒロさま
コメントありがとうございます。
ソースは他にコメント頂いた方から指摘があり変更しているので、行数が変わっていると思います。
「sendLine(strDate,strSubject,strMessage);」の直前でエンコードします。
もしくは以下のようにsendLine内でエンコードしてもいいと思いますが、試してないです。
「sendLine(strDate,strSubject,encodeURIComponent(strMessage));」
いつもありがとうございます。
早速、Archivesなどを見返しながら修正させていただきます。
以前のgoogleのシステム変更のときにスクリプトをいじくってしまったときに、おかしくなったのかもしれません。
また、ご報告させていただきます
スクリプトをありがたく使わせてもらっています。全件のメールを取得するようにしているのですが、返信や転送で来たメールは最新のものではなく、一番元のメールがLINEには届きます。回避する方法をご教授いただけると幸いです。
きよさま
コメントありがとうございます。
なるほど~。取得しているのがスレッドなので、
今のままだと確かに最初のメッセージが表示されてしまいますね。
過去のやり取りを全部表示しても良ければforループの中を以下に変更します。
var lastNo =myMessages[i].length-1;
var strDate = Utilities.formatDate( myMessages[i][lastNo].getDate(), ‘Asia/Tokyo’, ‘M/d HH:mm’);
var strSubject = myMessages[i][lastNo].getSubject();
var strMessage = myMessages[i][lastNo].getPlainBody().slice(0,500);
//LINEにメッセージを送信
sendLine(strDate,strSubject,strMessage);
//メッセージを既読にする
myMessages[i][lastNo].markRead();
なんですけど、全部表示されるのはちょっと鬱陶しいかもですねー。
lastNoのもう一つ前のメッセージの最初の1行目を検索して、
その文を見つけたら、その行以降カットする、
とか入れたら実現出来そうですが、ごめんなさい、そちらは試してないです。
参考になれば幸いです。自分のもlastNoに直しておきます☆
わざわざありがとうございます。細かいことをやりだすと複雑ですね(;’∀’) 仕組みがよくわからないのでfor ループのところをコピーさせていただいたんですが,なぜかエラーに??少し勉強してみます。
また良い方法がありましたら教えてください。
きよさま
エラー。。どうしてだろう。。お役に立てなくてごめんなさい。
配列の[0]→[lastNo]への変更なのですがエラーが解決出来ないようでしたら、またエラー内容を教えてくださいね。上手く行きますように。
数日経ってから実行したらいけました!ありがとうございます。