1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GAS】QQEnglishの予約メールからGoogleカレンダーに自動登録する

Posted at

はじめに

  • 最近オンライン英会話にハマっており、毎日レッスンを受けています。日によって受講時間が異なるため、毎回予約完了後に手入力でGoogleカレンダーに登録していましたが、面倒くさい…
  • 予約完了メールが毎回送られてくるので、それをトリガーに登録できれば完全に自動化できそうです。ということで先人の知恵を拝借しつつ初めてのGoogleAppScriptに挑戦してみました
  • こちらの記事を参考に作成しました、ありがとうございます→DMM英会話の予定をGoogleカレンダーに自動登録する方法

コード

const CRITERIA = "from:noreply@notify.qqeng.com subject:【QQEnglish】レッスン予約完了のお知らせ is:unread ";

function main() {
  eachMessage(CRITERIA, function (message) {
    const cal = CalendarApp.getDefaultCalendar();
    const body = message.getBody();    
    const subject = message.getSubject()
    const [startDateString] = subject.match(/\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}/g)
    const curriculum = body.match(/(?<=カリキュラム: )(.*)/g);
    Logger.log(curriculum)

    const title = `QQ/${curriculum}`;
    const startTime = new Date(startDateString);
    const endTime = new Date(startTime.getTime() + 30 * 60000);

    cal.createEvent(title, startTime, endTime);
  });
}

function eachMessage(CRITERIA, callback) {
  GmailApp.search(CRITERIA).forEach(function(thread) {
    thread.getMessages().forEach(function(message) {
      callback(message);
      message.markRead(); 
    });
  });
}

処理の流れ

  1. 条件にあてはまるメールを抽出(送信元アドレス、タイトル、未読である)
  2. メールタイトルから受講日時を正規表現で抽出
  3. メール本文からカリキュラム名を正規表現で抽出
  4. GoogleカレンダーAPIのcreateEvent関数でカレンダーに登録
  5. カレンダー登録済みメールをmarkRead関数で既読にする

GmailMessageクラスについて

  • 今回は3つの関数を使用しました
関数名 説明
getSubject() メールのSubject(タイトル)を取得
getBody() メールのBody(中身)を取得
markRead() メールを既読にする
  • 使用できる関数の一覧についてはこちらのGoogleのページにて確認可能です

トリガーの設定方法

  • 左のメニューからトリガー→トリガーを追加→分ベースのタイマー→15分おき(時間はお好みで)
  • 実行時間、実行回数、トリガー数の制限はありますが、今のところ15分おきの実行で問題なく動いています

おわりに

  • GoogleAppScript、お手軽で楽しいですね!個人開発でもっと活用してみたいと思います
  • このコードを流用することであらゆる予約メールをGoogleカレンダーに登録することができると思いますので、ぜひ参考にしてください
  • (ちなみに)QQEnglishのカリキュラムではカランレッスンとR.E.M.Sを受講していますが、筋トレのような爽快感を得られておすすめです^^
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?