“
中級者向け実践: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のエンドポイントURLoptions
: 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開発の一助となれば幸いです。
“