0
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.

[GoogleAppsScript] 占いをLINEに通知する

Last updated at Posted at 2020-05-24

はじめに

LINE Notifyを使用して占いを通知するBOTを作成しました。
1_1.png

GoogleAppsScript(GAS)にて1日1回通知プログラムを実行します。
そのプログラムでは、占い配信からその日の占い情報を取得して、LINE Notifyに通知します。

占い配信API

毎日全12星座を星座毎に占いデータを配信するAPIです。商用で使用する場合は有料となります。使用する場合は、利用規約をご確認ください。

LINE Notify

LINEアカウントのメッセージを通じてユーザーに配信するAPIです。 ユーザーアカウントやグループに通知することが可能です。

アクセストークンの発行手順

  1. https://notify-bot.line.me/ja/ にアクセスする。
  2. LINEのアカウントでログインする。
2_2.png
  1. 「トークンを発行する」を押下する。
3.png
  1. トークンを発行する対象を選択します。「トークン名」に入力して、「発行する」を押下する。(対象がグループの場合は、グループメンバーに「LINE Notify」を招待する必要がある)
4_1.png
  1. 発行したトークンをコピーする。
5_1.png
  1. 発行済みのアカウントやグループは連携済みとなる。(解除する場合は、「解除」を押下する)
6.png

GoogleAppsScript

  1. GoogleAppsScriptを開いて、以下のスクリプトを実装します。LINE_NOTIFY_TOKENにLINE Notifyで発行したトークンを指定する。USER_LISTにユーザーの星座を指定する。
main.gs
/**
 * 占い配信BOT
 * 
 * powerd by JugemKey: http://jugemkey.jp/api/
 * 【PR】原宿占い館 塔里木: http://www.tarim.co.jp/
 */
const LINE_NOTIFY_TOKEN = '*****'; // ※ここにLINE NOTIFY用のアクセストークンを指定する
const zodiacSign = {
    ARIES: 0, // 牡羊座
    TAURUS: 1, // 牡牛座
    GEMINI: 2, // 双子座
    CRAB: 3, // 蟹座
    LEO: 4, // 獅子座
    VIRGO: 5, // 乙女座
    LIBRA: 6, // 天秤座
    SCORPIO: 7, // 蠍座
    SAGITTARIUS: 8, // 射手座
    GOAT: 9, // 山羊座
    AQUARIUS: 10, // 水瓶座
    FISH: 11, // 魚座
};

// ※ここに通知したいユーザーの星座を指定する
const USER_LIST = [{
        name: 'A男',
        sign: zodiacSign.ARIES
    },
    {
        name: 'B子',
        sign: zodiacSign.SAGITTARIUS
    }
];
const WEEKDAY = ["", "", "", "", "", "", ""];

/**
 * メイン処理
 */
function main() {
    try {
        let nowDt = new Date();
        let targetDt = Utilities.formatDate(nowDt, 'Asia/Tokyo', 'yyyy/MM/dd');
        let res = getHoroscope(targetDt);
        console.log(res);

        let horoList = res['horoscope'][targetDt];
        let dt = Utilities.formatDate(nowDt, 'Asia/Tokyo', `MM/dd(${WEEKDAY[nowDt.getDay()]})`);
        let message = `\n今日の占いだよ!!\n\n--- ${dt} ----\n\n`;
        for (let i in USER_LIST) {
            let user = USER_LIST[i];
            let horoObj = horoList[user.sign];
            message += `< ${user.name}(${horoObj.sign}) >\n`;
            message += `ランキング: ${horoObj.rank}位\n`;
            message += `総合運: ${getStar(horoObj.total)}\n`;
            message += `恋愛運: ${getStar(horoObj.love)}\n`;
            message += `仕事運: ${getStar(horoObj.job)}\n`;
            message += `金運  : ${getStar(horoObj.money)}\n`;
            message += `ラッキーアイテム: ${horoObj.item}\n`;
            message += `ラッキーカラー: ${horoObj.color}\n`;
            message += `${horoObj.content}\n`;
            message += `\n`;
        }
        sendLineNotify(message);

    } catch (e) {
        console.error(e.stack);
    }
}

/**
 * 星を取得する
 * @param {Number} num 
 */
function getStar(num) {
    let message = '';
    for (let i = 0; i < 5; i++) {
        if (i < num) {
            message += '';
        } else {
            message += '';
        }
    }
    return message;
}

/**
 * 占い情報を取得する
 * @param {String} date 日付 
 */
function getHoroscope(date) {
    let url = `http://api.jugemkey.jp/api/horoscope/free/${date}`;
    let options = {
        'method': 'get',
        'validateHttpsCertificates': false
    };
    let response = UrlFetchApp.fetch(url, options);
    return JSON.parse(response.getContentText('UTF-8'));
}

/**
 * LINEにメッセージを送信する
 * @param {String} message メッセージ 
 */
function sendLineNotify(message) {
    let url = 'https://notify-api.line.me/api/notify';
    let options = {
        'method': 'post',
        'headers': {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Authorization': `Bearer ${LINE_NOTIFY_TOKEN}`
        },
        'payload': `message=${message}`
    };
    let response = UrlFetchApp.fetch(url, options);
    return JSON.parse(response.getContentText('UTF-8'));
}
  1. 「編集」->「現在のプロジェクトのトリガー」を押下する。
10.png
  1. 「トリガーを追加」を押下する。
11.png
  1. プログラムを実行する条件を入力して、「保存」を押下する。
12.png

参考リンク

さいごに

ソースコードをGitHubに公開しています。

以上です。

0
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
0
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?