5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SlackのSlashコマンドでSpreadsheetのGASを実行する方法

Last updated at Posted at 2023-03-26

最初に

  • SlackのSlashコマンドからSpreadsheetのGASウェブアプリを実行する方法を解説します
  • サンプルのSpreadsheetやGASのソースコードも公開しますので、ご参考にして下さい

おすすめの読者

  • 業務でSlack, Google Spreadsheetを使う人
  • Spreadsheetの集計情報をSlack上から気軽に取得したい人

手順

  • Slackアプリを作成する
  • SpreadsheetのGAS関数を「ウェブアプリ」として公開する
  • SlackアプリにSlashコマンドを作成し、GASウェブアプリのURLを登録する

Slackアプリを作成する

Slashコマンドを登録するにはSlackアプリが必要になるのでまずは作成します

cf6270d7-dd52-a65f-9292-6ec701ba394c.png
  • Install to Workspaceを実行します
    image.png

  • Verification Tokenを控えます

    • SpreadsheetのGASで使用します
      FireShot Capture 115 - Slack API_ Applications - Sample Slack - api.slack.com.png

※ 本来はSigning Secretを利用することが推奨されています1が、GASウェブアプリではHTTP Header情報が扱えません2
※ そのため、Verification Tokenを用いた認証を行います

SpreadsheetのGAS関数を「ウェブアプリ」として公開する

Spreadsheetの内容

  • 所属するENECHNAGEのランチ手当用のSpreadsheetを模しています
  • 当月のランチ手当の利用回数が左側に、誰と行ったかの情報が右側にまとめられています

SpreadsheetにGAS関数を追加します

ソースコードはGithubに公開しますので、ここではポイントだけ記します

doPost(e)関数を定義し、認証を行う

  • 関数名はdoPost(e)である必要があります3
  • 認証はSlackアプリで確認したVerification Tokenで行います
const doPost = e => {
  checkAuthentication(e);
}

const checkAuthentication = e => {
  const verificationToken = PropertiesService.getScriptProperties().getProperty("SLACK_VERIFICATION_TOKEN");

  if (verificationToken != e.parameter.token) {
    throw new Error('Invalid token');
  }
}
  • SLACK_VERIFICATION_TOKENは「スクリプト プロパティ」として以下から設定できます
    • 「プロジェクトの設定」→「スクリプト プロパティ」
      image.png

Slashコマンドで入力したテキストを取得し、値を返却します

  const userName = e.parameter.text;

  //省略

  const response = {text: answer};
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);

ソースコード

GASを「ウェブアプリ」として公開します

  • 「デプロイ」→「新しいデプロイ」をクリック
    image.png

  • 「種類の選択」→「ウェブアプリ」→「デプロイ」をクリック

    • アクセスできるユーザーは「全員」とする
      image.png
  • ウェブアプリのURLを控える
    FireShot Capture 004 - lunch_allowance - プロジェクト編集者 - Apps Script - script.google.com.png

SlackアプリにSlashコマンドを作成し、GASウェブアプリのURLを登録する

  • 「SlashCommands」→「Create New Command」をクリック
    image.png

  • 必要情報を入力する

    • Request URLにはGASウェブアプリのURLを入力して下さい
      image.png

Slack上での操作

以下のようにSlashコマンドが使えるようになりました🎉

image.png
image.png
image.png

  1. https://api.slack.com/authentication/verifying-requests-from-slack

  2. https://developers.google.com/apps-script/guides/web?hl=ja

  3. https://developers.google.com/apps-script/guides/web?hl=ja

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?