(更新日:2022/01/27)
誕生日にLINEグループに、メッセージと画像を自動送信する仕組みです。もちろん、タイムリーに自分で送信できればいいですが、プライベートや仕事の都合で、AM0時ぴったりは難しい。というときに試していただきたい内容です。自動送信は、決められたタイミングで繰り返し同じ動作を設定できるので、「毎月このタイミングLINEしたい。」という場合にも有効です。また、自分に向けたリマインドに使うのもありと思います。今回はWindowsユーザー向けに記事を書いています。Windowsタスクスケジューラ-、Python、LINEを連携させ、お祝いメッセージを送ってみましょう!
想定読者
「誕生日AM0時ぴったりに、LINEでお祝いしたい!」という方。
「仲のいい友達をアッと言わせたい!」という方。
やり方
Pythonインストール
まず初めに、Pythonをまだインストールしていない方は、
こちらの記事(定時にOutlookメールを自動送信する方法)を参考にして、
Pythonをインストールしてください。
LINE APIの取得
LINE NotifyというLINE APIを使用します。
API(Application Programming Interface)の略です。
あるアプリが、別のアプリ(ソフトウェア)の機能を使いたい!となった際に、
連携を行うための窓口が、APIです。
今回は、LINEの機能をPythonと連携させたいので、LINEのAPIを使用する形です。
LINE Notify(LINE APIの一種)では、トークンと呼ばれる暗号キーを発行し、
そのトークンに紐づく相手に、メッセージや画像を送ったりすることができます。
まずは、LINE Notifyのアカウント作成を行ってください。
![](https://blueclearblog.com/wp-content/uploads/2022/01/image-93-1024x635.png)
ページ右上の「ログイン」をクリックします。
ログイン後、プルダウンをクリックし、「マイページ」を選択します。
![](https://blueclearblog.com/wp-content/uploads/2022/01/image-96-1024x409.png)
「アクセストークンを発行する」を選択してください。
![](https://blueclearblog.com/wp-content/uploads/2022/01/image-97.png)
LINEメッセージを投稿するのは、TO自分自身 or TOトークルーム限定みたいです。
とりあえずは、自分自身を対象にしておいて、プログラムのテストをしましょう。
(グループラインに、テスト用のメッセージを連発することになってしまうので)
![](https://blueclearblog.com/wp-content/uploads/2022/01/image-98.png)
トークンが発行されました。
忘れないようにメモしておいてください。
![](https://blueclearblog.com/wp-content/uploads/2022/01/image-99.png)
システム全体像
メール自動送信システムへの登場人物は、
Windowsタスクスケジューラ-、Python、LINEです。
全体フローは以下の通りです。
- Windowsタスクスケジューラ-で、Pythonファイル実行するタスクを作成
- Pythonファイル実行
- LINE Notifyと連携
- PC内の指定したフォルダから写真をランダムに1枚選択
- 写真タイトルとその画像をLINEで対象へ送信
あらかじめ、Pythonプログラムと同じフォルダに、
「images」というフォルダを作成し、
投稿したい画像を格納しておいてください。
このとき、画像のタイトルがメッセージとして、画像と一緒に投稿されるので、
画像タイトルに、「Happy Birthday!!」のようなメッセージを入れましょう。
Pythonプログラム
さっそく、Pythonコードの全体像です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/usr/bin/env python # coding: utf-8 #必要なライブラリをインポート import requests import glob import os import time import sys import datetime import random #メッセージと写真を送付する関数を定義 def Line_Notify(message,image): access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXX' #取得したLineトークン url = "https://notify-api.line.me/api/notify" #LINE-APIのURL(エンドポイント) time = datetime.datetime.now() #現在時刻の取得 time = time.strftime('%Y年%m月%d日 %H:%M:%S') #見やすい形(〇〇年◯◯月〇〇日 00:00:00)に変換 send_contents = time #情報を辞書型に変更 send_dic = {'message':send_contents} headers = {'Authorization': 'Bearer ' + access_token} payload = {'message': message} files = {'imageFile': open(image, 'rb')} #binary dataで読み込む #LINEへの投稿を実行 requests.post(url, headers=headers, data=send_dic,) requests.post(url, headers=headers, params=payload, files=files,) #LINEへの投稿を実行 files = glob.glob("images/*") #画像ファイルのパスを取得 file = random.choice(files) #取得したパスの中からランダムに1つを抽出 print(file) #抽出した1つのファイルパスを出力 Line_Notify(os.path.split(file),file) #画像のファイル名と画像自体を出力 |
タスクスケジューラ-の設定
あとはタスクスケジューラ-で、定時にこのPythonプログラムを実行する
タスクを作成していきます。
タスクスケジューラ-の使い方は、こちらの動画を参考にしました。
タスクスケジューラ-でのタスク設定は、
そんなに難しくないので、ここまでこれば自動化完成です!
まとめ
いかがでしたでしょうか?
いろいろと応用も聞きそうな仕組みなので、ぜひ自分なりにアレンジしてみてください。
また、こちらの記事も参考にしてみてください。
ではでは!