ソース

cron.yaml

1
2
3
4
5
cron:
- description: Morning Greeting
  url: /cron/morning_greeting
  schedule: every day 7:00
  timezone: Asia/Tokyo

app.yaml

 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
project: your-project-id # 各自のプロジェクトIDを指定
version: 1
runtime: python27
api_version: 1
threadsafe: yes

# ルーティング
handlers:
# task queue
- url: /task/messaging
  script: worker.app
  login: admin

# cron
- url: /cron/.*
  script: cron.app
  login: admin

# 上記以外はmain.pyに向けます
- url: .*
  script: main.app # main.pyではない

# 使用ライブラリの指定
libraries:
# Webフレームワークのwebapp2を使用する
- name: webapp2
  version: "2.5.2"

cron.py

26行目に自分のLINEのuseridを入力します。

ユーザIDはLINEから /callback にリクエストがきたときのログに出ています

 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
39
40
41
42
#!/usr/bin/env python
# coding: utf-8

import config
import datetime
import json
import logging
import webapp2

from google.appengine.api import urlfetch

ENDPOINT = 'https://api.line.me/v2/bot/message/push'


class MorningGreetingHandler(webapp2.RequestHandler):
    def get(self):
        try:
            # +9時間で日本時間に合わせる
            now = datetime.datetime.now() + datetime.timedelta(hours=9)

            headers = {'Content-Type': 'application/json; charset=UTF-8',
                       'Authorization': 'Bearer {}'.format(config.CHANNEL_ACCESS_TOKEN)}

            message = u'おはようございます{}時です'.format(now.strftime('%H:%M'))

            payload = {'to': '', # 自分のuseridをいれる
                       'messages': [{'type': 'text',
                                     'text': message}]}

            r = urlfetch.fetch(ENDPOINT, method=urlfetch.POST,
                               payload=json.dumps(payload),
                               headers=headers)
            logging.debug(r.status_code)
            logging.debug(r.content)
        except Exception, e:
            logging.error('Failed Morning Message')
            logging.error(e.message)


app = webapp2.WSGIApplication([
    ('/cron/morning_greeting', MorningGreetingHandler),
], debug=True)

ちなみに

デプロイするとcronの設定が 管理コンソール の[App Engine] > [タスクキュー] > [cronジョブ]から確認できます。