前提条件
で作成していますので、ご自身の環境にあわせてご利用ください。
見本アプリ
Githubで見本アプリを公開しています。
git clone
していただき、必要な部分を書き換えるだけで使用できるようにしています。
実装手順
本記事ではRailsアプリケーションの作成を解説します。
Railsアプリケーションを作成しよう
rails newで新規アプリケーションを作成
scaffoldで作ってもオッケーです。
今回作成するアプリではデータを保存しないため、-d
オプションは付ける必要はありません。
rails new 任意のアプリケーション名
コントローラーの作成
わかりやすく「posts_controller」としておきましょう。
rails g controller posts
コントローラーの記述は以下のようにしましょう。
class PostsController < ApplicationController def index #Slackのトークンを設定します Slack.configure do |config| config.token = "slackapiで取得したtokenを記述する" end # SlackのAPIクライアントを新規で生成します client = Slack::Web::Client.new # 「#」を先頭につけてチャンネル名を記述します channel = "#slackのチャンネル名を記述する" # config.jsonを使ってGoogleDriveに接続します @session = GoogleDrive::Session.from_config("config.json") # 操作するシートのID、シート名を定義します @sheets = @session.spreadsheet_by_key("スプレッドシートのIDを記述する").worksheet_by_title("シート名を記載する") # 動作を確認するため、左上のセルに値を入れるようにします @sheets[1, 1] = "Hello World" #変数の定義 @content = @sheets[5, 16] # 投稿するメッセージを記述します text = "スプレッドシートの値は#{@content}です。" response = client.chat_postMessage(channel: channel, text: text) # シートを上書き保存します(Hello Worldを保存する必要はないため、記述しなくてもOKです) @sheets.save end end
ビューの作成
views
のposts
フォルダの中にindex.html.erb
ファイルを作成しましょう。
app/views/posts/index.html.erb
中身は以下のように記述しましょう。
投稿した内容を確認するためだけのシンプルな作りです。
以下の内容をSlackに送りました。 スプレッドシートから受け取った内容は"@content"です。
ルーティングの設定
トップページを開くことが実行のトリガーになるので、非常にシンプルです。
root to: "posts#index"
初回実行時の設定
rails sにてアプリを実行した際、初回のみ認証が求められます。
1. Open this page: http...... 2.
上記のように表示されますので、http...部のURLをブラウザで開きましょう。
ブラウザ上で文字列が表示されますので、コピーしましょう。
コピーした文字列をターミナルに貼り付ければ認証完了です。
(2. の後は入力待機状態になっているはずです。誤って空のままEnterキーを押してしまった場合は、一度サーバーを落として再度rails s
を行いましょう。)
挙動確認
対象のチャンネルでメッセージが表示されていることを確認しましょう。
今回のアプリで疑問・質問があればフォームにてお問い合わせをお願いいたします。