スマホにある子供の写真を親のLINEへ定期的に送ってみた
はじめに
コロナの影響で実家に帰れない為、子供の写真を親のLINEへ送っています。
しかし段々とLINEから送る事を手間に感じてしまい、送り忘れも増えました。
画像共有アプリの利用も考えましたが、アプリのインストール方法から親に説明する必要があるため、新しいアプリの利用は現実的な方法ではありません。
そこで写真を撮るだけで親のLINEに送れないかと考え、取り組むことにしました。
また無料で使えるサービスを組み合わせて実現することを目標にしました。
使ったサービス
- Google フォト
写真や動画をバックアップする - iPhone と iPad - Google フォト ヘルプ
ファイルを一般公開で共有する - Google Workspace ラーニング センター
Google Cloud Computing, Hosting Services & APIs
- Google Apps Script
【サンプルコード】GASでGoogleフォトの写真をドライブに日付ソート
- LINE Messaging API
料金
LINEに1日1枚の画像を送る程度であれば無料の範囲で実現できました。
- Google フォト
- Google ドライブ
容量15GBまで無料で使えます。
Google のストレージを追加購入する - パソコン - Google ドライブ ヘルプ
- Google クラウド
- Google Apps Script
APIも無料で使えます。
Google Drive Apis の利用に関して
- LINE Messaging API
フリープランを使用していて無料です。
料金プラン|LINE for Business
サービス間の連携
①画像を読み込む
子供の写真を撮影するスマホにGoogleフォトのアプリをインストールしています。
同期の設定によりスマホ内の写真はGoogleフォトのクラウドストレージに自動でバックアップされるので、Google Apps Scriptでその画像を毎朝9時に読み込みます。
②画像をコピー
Googleアカウントを持たない人にも共有する一般公開のフォルダにGoogleフォトの画像をコピーします。
一般公開とすることでLINEに画像の表示を可能にしています。
③メッセージの送信
Googleフォトにコピーした画像のURLをLINEに送信します。
画像のURLは外部から閲覧できるよう部分的に変更をしています。
④画像の表示
LINEを開くとGoogleドライブに保存していた画像が表示されます。
学び
①Googleドライブ
LINEに画像を表示するにはドライブのURLを変更する必要がありました。
ドライブのURLから画像にアクセスできるURLに変更しています。
var downloadURL = buff.getUrl().replace("/file/d/", "/uc?id=").replace("/view?usp=drivesdk", "")
【変更前】
https://drive.google.com/file/d/<ファイルID>/view?usp
【変更後】
https://drive.google.com/uc?id=<ファイルID>
②ダウンロードリンク
画像のURLに "=d" を付加すると画像のダウンロードリンクになります。
LINEで送った画像のダウンロードを可能にする為に必要でした。
③LINE Messaging API
画像を送るには imageThumbnail と imageFullSize を使用します。
変数downloadURLにGoogleドライブの画像のURLを格納しています。
var token = ["XXXXXXXXXXXXXXXX"]; //LINEで自動通知をする宛先のトークン。 var options = { "method" : "post", "payload" : {"message": "Today's photo.", "imageThumbnail" : downloadURL, "imageFullsize" : downloadURL, }, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
結果
僕自身はLINEを使う事が無くなり写真を撮るだけで良くなりました。
なにより我が子の成長を母と兄に見てもらえて嬉しく思っています。