Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
25
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

GoogleSpreadSheetからdiscordにpost

ストックじゃなくていいねください。

事前準備

途中から 前回までやってる前提の話ができてきます。
ただ、GoogleAppsScriptでdiscordにpostしたいだけの人は無視してください。

GoogleSpreadSheet

今回はGooglesSpreadSheetからdiscordにポストさせます。
前回同様にR6S持ちキャラというスプシを見本に使用します。

discordに送信用botを作成

  1. 追加したいdiscordのサーバー設定を開き、Webhoooksを選択。
  2. 名前と追加するチャンネルを設定し保存。また、その時にwebhook URLをメモしておいてください。(何度でも見れますのでメモしなくても必要なときにコピーするだけでも大丈夫です)
    39e700d23ba07e700b9bada5cc6cfd32.png
  3. 先程のwebhook URLをブラウザで開いてください。
  4. "token":"トークン"が書かれているのでtokenをメモしてください。

GoogleAppsScript

操作したいスプシのツールタブ>スクリプトエディタを選択
ファイル→新規作成→スクリプトファイル

source


function R6S() {
  // 取り扱いたいスプレッドシートのURL
    const spreadSheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1VHruuvXrQXxvfFxVpLi1mz050BJHHrLpe_itdWOlHys/edit#gid=1404341781');

    const message = "スプシ更新したよ!!" //送信するメッセージ

    discord(message);
}
function discord(message) {
    // 各所必要な項目をセットします
    const url        = 'https://discordapp.com/api/webhooks/zzzzzzzzzzzzzzzzzzzzzzzz';//discordのwebhooksのurl
    const token      = 'MzkwMTkzNjQ4NzQ4MzMxMDE4.DRwEmA.tMdsdsdsdsDU_Bsasasasasasaasasasasas';//discordのwebhooksのトークン
    const channel    = '#general';//送信したいチャンネル
    const text       = message;
    const username   = 'らんらん';//送信させたいユーザー名
    const parse      = 'full';
    const method     = 'post';

    const payload = {
        'token'      : token,
        'channel'    : channel,
        "content"    : text,
        'username'   : username,
        'parse'      : parse,
    };

    const params = {
        'method' : method,
        'payload' : payload,
        'muteHttpExceptions': true

    };


   response = UrlFetchApp.fetch(url, params);

  //Logger.log(response.getContentText());
 }

今回は「スプシ更新したよ!!」とpostするだけですが、時間の取得やシート内容をpostすることもできます。
自分で調べて改良してみてください。

トリガーの設定

スクリプトエディタに時計みたいなマークがあるのでクリック!
80792eee92fe4403784c5a6b93c3805e.png

時間や編集時など実行するタイミングを設定します。
今回はシートが編集されると実行し、discordにbotが「スプシ更新したよ!!」と送信されます。

 スプシから情報を取得

ここから前回に追加していきます。

source

discord_bot.rb

########ここより上は前回のdiscord_bor.rb
# スプシ更新したよ!!と送信されると実行
bot.message(content: 'スプシ更新したよ!!') do |event|
    range = '持ちキャラ一覧!A2:O14'#指定範囲
    response = service.get_spreadsheet_values(spreadsheet_id, range)
    response.values.each do |row|
       #Print columns A and O, which correspond to indices 0 and 4.
      event.respond "#{row[0]},#{row[1]}, #{row[2]}, #{row[3]}, #{row[4]}, #{row[5]}, #{row[6]}, #{row[7]}, #{row[9]}, #{row[10]}, #{row[11]}, #{row[12]}, #{row[13]}"
    end
  end

スプシ更新したよ!とbotが送信すると別のbotがスプシの情報を参照して指定範囲の内容を送信します。

おまけ

Discordにwebhookのbotを作ったので、GoogleHomeでdiscordのbotにメッセージを送信させるようしましょう。
書くのが面倒なのでQiitaにあった記事拾ってきました。
ここの記事見てやってみてください。
以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
25
Help us understand the problem. What are the problem?