見出し画像

開発日記(2024/05/17)今度こそASCから取得した値をLINEボットで送信する処理をGCF上に実装する。

有効な値が返ってこなければテストにならないわけで、どこかデータがある日付を選んで固定値でテストをしなくてはかなと思っていたのですが、なぜかGCF上で同じコードで実行してみたら404ではなく値が返ってくる。

なぜだ・・・、と思ってローカルからも改めて実行してみたら値が返ってくるではありませんか。。なんだったのだろう。まあテスト用に別のコードを用意しなくていいのは助かるので気にしないことにします。

もうここまできたらあとはこれを値にセットしてラインに渡すだけなので、じぴえもんにまたいい感じにコードを書いていただく。

// "Units"の値を抽出する
const units = apiResponse.data.map(item => item.Units).filter(units => units !== undefined && units !== "");

ここまでお膳立てしてもらえれば、組み合わせるだけなので僕でもできますね!下記のコードで、よろしくお願いします!!!!!!

const axios = require('axios');

exports.sendLineMessageSalesReport = (req, res) => {
  const token = 'ここはLINEボットのトークン';
  const userId = 'こっちはユーザーID';

  axios.get('<ここにASCから値を取ってくるAPIのURLを記載します。>')
    .then(apiResponse => {
      // APIから取得したデータから"ID"の値を抽出する
      const units = apiResponse.data.map(item => item.Units).filter(units => units !== undefined && units !== "");

      // LINEのメッセージを構築する
      const message = `昨日は${units}個のアプリがインストールされました!`;

      const data = {
        to: userId,
        messages: [
          {
            type: 'text',
            text: message
          }
        ]
      };

      // LINE APIにメッセージを送信する
      return axios.post('<https://api.line.me/v2/bot/message/push>', data, {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${token}`
        }
      });
    })
    .then(response => {
      res.status(200).send('Success: ' + JSON.stringify(response.data));
    })
    .catch(error => {
      res.status(500).send('Error: ' + (error.response ? error.response.data : error.message));
    });
};

できた!!!!!!!

日付が既に5/17ではない・・・

これを毎日定時実行してもらう感じですかね。何時がいいんだろう。やる気を出したくなる時間。終業後の18時とかかな。や、12時とかの方がいいか。いや〜いずれにしてもよかったよかった。

定時実行は前の記事でも触れたとおり下記の記事を参考にCloud Scheduler(GCS)を使いたいと思います。

ということで次回は

「Cloud Scheduler」でLINEボットからメッセージを定時配信する。

ご覧いただきありがとうございます。とても嬉しいです。