“中級者向け実践:IT企業でのGAS API連携によるリアルタイムデータ収集とSlack通知(チーム利用)”

中級者向け実践:IT企業でのGAS API連携によるリアルタイムデータ収集とSlack通知(チーム利用)

本記事では、IT企業におけるチームでの利用を想定し、Google Apps Script(GAS)を活用して外部APIからリアルタイムデータを収集し、Slackに通知するシステム構築について、中級者向けに解説します。API連携の基礎から、エラーハンドリング、Slack通知の実装まで、実践的なコード例を交えながらステップバイステップで解説します。

GASでのAPI連携の基礎

GASでAPI連携を行うには、UrlFetchAppクラスを使用します。このクラスを使うことで、HTTPリクエストを送信し、APIからデータを受信できます。JSON形式でデータが返ってくるAPIが多いため、JSON.parse()を使ってJavaScriptオブジェクトに変換します。

UrlFetchApp.fetch() の基本的な使い方

UrlFetchApp.fetch()メソッドは、APIエンドポイントに対してリクエストを送信し、レスポンスを取得します。基本的な構文は以下の通りです。

const response = UrlFetchApp.fetch(url, options);

  • url: APIのエンドポイントURL
  • options: HTTPメソッド、ヘッダー、ペイロードなどのオプション

例えば、GETリクエストを送信する場合は以下のようになります。

const url = \"https://api.example.com/data\";
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
Logger.log(json);

リアルタイムデータ収集の実装例

ここでは、仮に株価APIからリアルタイムデータを収集し、特定の条件を満たした場合にSlackに通知する例を考えます。

株価APIからデータを取得する

まず、株価APIからデータを取得する関数を作成します。ここでは、例としてhttps://example.com/stock-api?symbol=AAPLのようなAPIを想定します。

function getStockData(symbol) {
const url = `https://example.com/stock-api?symbol=${symbol}`;
try {
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
return json;
} catch (e) {
Logger.log(`Error fetching stock data: ${e}`);
return null;
}
}

この関数は、指定されたシンボル(例:AAPL)の株価データをAPIから取得し、JSON形式で返します。エラーが発生した場合は、nullを返します。

特定の条件を満たした場合にSlackに通知する

次に、取得した株価データが特定の条件を満たした場合に、Slackに通知する関数を作成します。SlackのIncoming Webhooksを使用します。

function sendSlackNotification(message) {
const webhookUrl = \"https://hooks.slack.com/services/YOUR_WEBHOOK_URL\";
const payload = {
\"text\": message
};
const options = {
\"method\": \"post\",
\"contentType\": \"application/json\",
\"payload\": JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(webhookUrl, options);
} catch (e) {
Logger.log(`Error sending Slack notification: ${e}`);
}
}

この関数は、指定されたメッセージをSlackの指定されたチャンネルに送信します。YOUR_WEBHOOK_URLは、SlackのIncoming WebhookのURLに置き換えてください。

メイン関数:定期的に株価をチェックし、Slackに通知する

最後に、これらの関数を組み合わせて、定期的に株価をチェックし、特定の条件を満たした場合にSlackに通知するメイン関数を作成します。

function main() {
const symbol = \"AAPL\";
const threshold = 150;
const stockData = getStockData(symbol);

if (stockData && stockData.price > threshold) {
const message = `AAPLの株価が${threshold}ドルを超えました! 現在価格: ${stockData.price}ドル`;
sendSlackNotification(message);
}
}

この関数は、AAPLの株価が150ドルを超えた場合にSlackに通知します。この関数をトリガーで定期的に実行するように設定します(例えば、1時間ごと)。

エラーハンドリングとロギング

API連携を行う際には、エラーハンドリングが重要です。try...catchブロックを使用して、APIリクエスト中に発生する可能性のあるエラーをキャッチし、ログに記録します。また、Slack通知が失敗した場合も、エラーをログに記録するようにします。

応用例と活用シーン

  • サーバー監視: サーバーのCPU使用率やメモリ使用率をAPIから取得し、閾値を超えた場合にSlackに通知する。
  • 競合価格監視: 競合他社の価格情報をAPIから取得し、価格変動があった場合にSlackに通知する。
  • ソーシャルメディア監視: 特定のキーワードに関する投稿数をAPIから取得し、急増した場合にSlackに通知する。

まとめ

GASとAPI連携を活用することで、リアルタイムデータ収集とSlack通知を組み合わせた強力な自動化システムを構築できます。エラーハンドリングとロギングを適切に行い、安定したシステム運用を目指しましょう。この記事が、あなたのGAS開発の一助となれば幸いです。