Slackとスプレッドシートを連携!GASで簡単にメッセージを書き込む方法
Slack APIの設定から始めよう
GASでSlackとスプレッドシートを連携するには、まずSlack APIの設定を行います。
Slack APIトークンを取得
Slack APIを使ってメッセージを取得するためには、APIトークンが必要です。発行するには以下のステップを踏みます。
1. Slackのアプリディレクトリで新規アプリを作成します。
2. OAuth & Permissionsで必要なスコープを追加します(例: channels:read, chat:write)。
3. トークンをコピーして保存しておきます。
Slack APIをGASで呼び出す
次にGASを使ってSlack APIを呼び出す方法を見てみましょう。
function fetchSlackMessage() {
var token = "あなたのSlackトークン";
var response = UrlFetchApp.fetch("https://slack.com/api/conversations.history?token=" + token + "&channel=チャンネルID");
var data = JSON.parse(response.getContentText());
return data.messages;
}
ここでは、Slack APIのconversations.historyエンドポイントにリクエストを送り、指定したチャンネルのメッセージを取得しています。
スプレッドシートにデータを書き込む
GASを使えば、取得したSlackのメッセージをスプレッドシートに書き込めます。
スプレッドシートへの書き込み
スプレッドシートにメッセージを書き込む簡単なスクリプトをご紹介します。
function writeMessagesToSheet(messages) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
messages.forEach(function(message, index) {
sheet.getRange(index + 1, 1).setValue(message.text);
});
}
このスクリプトでは、GASのSpreadsheetAppを使い、スプレッドシートの指定した範囲にメッセージを順に書き込んでいます。
Slackとスプレッドシートを連携させる
いよいよSlackからメッセージを取得し、スプレッドシートに書き込むフローを完成させます。
全体のフローを組み立てる
Slackからメッセージを取得してスプレッドシートに書き込むフローは次のようになります。
function main() {
var messages = fetchSlackMessage();
writeMessagesToSheet(messages);
}
このように、main関数を作成することで、Slackとスプレッドシートをひとつのスクリプト内で連携させることができます。
練習問題:GASでエラーハンドリングを追加しよう
このスクリプトにエラーハンドリングを追加して、APIコールやスプレッドシートへの書き込みが失敗した場合に対応できるようにしましょう。
解答・解説
以下のスクリプトは、エラーハンドリングを含んでいます。
function mainWithTryCatch() {
try {
var messages = fetchSlackMessage();
if (messages && messages.length > 0) {
writeMessagesToSheet(messages);
} else {
Logger.log("No messages to write.");
}
} catch (error) {
Logger.log("Error occurred: " + error.message);
}
}
try ブロック内で正常な処理を行います。何か問題が起きたときには catch ブロックでエラーメッセージをログに記録します。
これにより、APIコールが失敗した場合などにスクリプトが止まらずエラー内容を確認できる利点があります。