토리로그

Google Apps Script로 Slack과 Google 스프레드시트 연동하기

Google Apps Script로 Slack과 Google 스프레드시트 연동하기

Google Apps Script와 Slack API를 사용하여 Google 스프레드시트의 데이터를 Slack으로 보내거나, Slack의 데이터를 스프레드시트로 가져오는 방법을 소개합니다. Zapier와 같은 외부 툴을 사용하지 않고, Google Apps Script로 직접 자동화하는 방법을 선호하는 분들께 도움이 될 것입니다.

1. Slack API 설정

먼저, Slack API를 설정해야 합니다.

1-1. Slack 앱 생성

  1. Slack API에 접속하여 새로운 앱을 만듭니다.
  2. 앱을 만들 워크스페이스를 선택하고, 앱 이름을 지정합니다.
  3. 앱이 생성되면 OAuth & Permissions로 이동하여 권한을 추가합니다.
    • chat:write 권한을 추가하여 Slack 채널에 메시지를 보낼 수 있게 설정합니다.

1-2. OAuth 토큰 발급

  1. OAuth & Permissions에서 Install App to Workspace를 클릭하여 앱을 설치하고 OAuth 토큰을 발급받습니다.
  2. 발급된 OAuth 토큰을 나중에 사용할 수 있도록 메모해 둡니다.

2. Google Apps Script 코드 작성

Google 스프레드시트에서 Google Apps Script를 사용하여 Slack에 메시지를 보낼 수 있도록 코드를 작성합니다.

2-1. 스크립트 편집기 열기

  1. Google 스프레드시트에서 도구 > 스크립트 편집기를 클릭합니다.
  2. 새로운 프로젝트가 생성되면 아래 코드를 추가합니다.

2-2. Slack 메시지 전송 코드

function sendMessageToSlack() {
  var url = "https://slack.com/api/chat.postMessage";
  var token = "xoxb-your-slack-token";  // 발급받은 OAuth 토큰
  var channel = "#your-channel";  // 메시지를 보낼 Slack 채널
  var message = "Google 스프레드시트에서 Slack으로 보내는 메시지입니다!";

  var payload = {
    token: token,
    channel: channel,
    text: message,
  };

  var options = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload),
    headers: {
      "Authorization": "Bearer " + token,
    }
  };

  UrlFetchApp.fetch(url, options);
}

4-1. 스프레드시트 데이터 슬랙으로 전송

스프레드시트에 있는 데이터를 Slack으로 보낼 수도 있습니다. 예를 들어 특정 셀의 값을 Slack 메시지로 전송하는 코드를 작성할 수 있습니다.

function sendSheetDataToSlack() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getRange("A1").getValue();  // A1 셀의 데이터 가져오기
  var message = "스프레드시트 데이터: " + data;

  sendMessageToSlack(message);  // 앞서 작성한 sendMessageToSlack 함수 호출
}

4-2. 슬랙의 데이터를 스프레드시트로 가져오기

Slack API를 통해 Slack의 데이터를 가져와 스프레드시트에 기록하는 방법도 가능합니다. 예를 들어, Slack 채널의 메시지를 스프레드시트로 저장할 수 있습니다.

이 글에서는 Google Apps Script를 사용해 Slack과 Google 스프레드시트를 연동하는 방법을 알아보았습니다. 이 자동화를 통해 작업을 간편하게 할 수 있고, 다양한 추가 기능을 통해 연동 가능성을 확장할 수 있습니다.