Chatwork Creator's Note

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

【GASで業務効率化】指定した日にChatworkへメッセージを投稿する

こんにちは、Chatworkのさかぐち(cw-sakaguchi)です。

「Google Apps Script」を利用して「業務効率化」する手順を不定期に更新しております。

Chatworkを利用する中でメッセージを「予約投稿」したいと思ったことはありませんか?

今回は「指定した日にChatworkへメッセージを投稿する仕組み」を作成しようと思います。

目次

Google Apps Scriptとは

gsuite.google.co.jp

Googleが提供しているJavaScriptベースのスクリプト言語です。

インストール作業等は不要でGoogle のサーバーで実行されます。 実行するために必要なものは以下の通りです。

  • Googleアカウント
  • ネットワーク環境
  • ブラウザ

この記事でできること

事前にスプレットシートに記載した日付にメッセージを送ります。

<スプレットシートで指定するもの>

  • 投稿日
  • 投稿内容
  • メッセージを投稿するグループチャットのルームID

手順

「指定した日にChatworkへメッセージを投稿する」手順を紹介していきます。

Chatwork API Tokenの発行

Chatwork APIを利用してメッセージを送信するため、Chatwork API Tokenを取得します。

以下の手順に沿って発行してください。

APIトークンを発行する – ヘルプ | Chatwork

取得できた「API Token」はメモ帳などに保存してください(後ほど使います)

スプレットシートの作成

1.Googleドライブを開き「新規」をクリック

Googleドライブを開き「新規」をクリック

2.「Googleスプレットシート」をクリック

「Googleスプレットシート」をクリック

3.スプレットシートを設定

スプレットシートを設定

以下の項目を準備してください。

  • No
  • ルームID
  • 投稿内容
  • 投稿日
  • 実行日時

実行日時の表示形式を「日時」にしてください。

実行日時の表示形式を「日時」にしてください

※シート名は「シート1」のままで問題ありません。

今回利用するスクリプトの中で、シート名を指定する部分があります。

シート名を変更した場合、スクリプトを変更してください。

予約投稿したい内容を記載

予約投稿したい内容を記載してください。

予約投稿したい内容を記載

項目 内容
No 管理しやすいように連番をつけてください。
ルームID 投稿したいグループチャットの「ルームID」を入力してください。確認方法はこちら
投稿内容 投稿したい内容を入力してください。絵文字やTO指定もできます。
投稿日 投稿日を「YYYY/MM/DD」の形式で入力してください。
実行日時 スクリプト内で自動で記録するため、空白のままで構いません。

Google Apps Scriptの作成

1.スプレットシートの「ツール」メニューから「スクリプト エディタ」をクリック

「編集」メニューから「スクリプト エディタ」をクリック

2.左上の「無題のプロジェクト」をクリックし、プロジェクトの名前を設定

プロジェクト名を設定

3.最初から記載のある以下のコードは利用しないため削除

function myFunction() {
  
}

4.以下のコードをコピペし、【編集対象】と書かれている部分を修正

// 【編集対象】Chatwork API Token
const token = 'ここにChatwork APIトークン';

function myFunction() {

  // スプレットシート読み込み
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1');
  const lastRow = sheet.getLastRow()

  // ChatworkAPIクライント作成
  const client = ChatWorkClient.factory({token: token});

  // 実行日時
  const today = new Date();

  // スプレットシートに記載がある分だけ繰り返す
  for(var i = 2; i <= lastRow; i++) {

    const room_id = sheet.getRange(i, 2).getValue(); // ルームID
    const message = sheet.getRange(i, 3).getValue(); // 投稿内容
    const reservation_date = new Date(sheet.getRange(i, 4).getValue()); // 投稿日
   
    // 同じ日付の場合、メッセージ送信
    if(diffDate(reservation_date,today)){
      client.sendMessage({
        room_id: room_id,
        body: message
      });

      // 実行日時の記録
      sheet.getRange(i, 5).setValue(new Date());
    }
  }
  
}

// 日付を比較する(同じ場合、trueを返す)
function diffDate(date1, date2){
  if(date1.getFullYear() == date2.getFullYear()){
    if(date1.getMonth() == date2.getMonth()){
      if(date1.getDate() == date2.getDate()){
        return true;
      }
    }
  }
  return false;
}

※シート名を「シート1」から変更した場合、以下を変更してください。

var sheet = ss.getSheetByName('シート1');

5.「プロジェクトを保存」をクリック

プロジェクトを保存

ライブラリの読み込み

Chatworkへメッセージ送信はライブラリ「Chatwork Client for Google Apps Script」を利用します。

1.ライブラリの「+」をクリック ライブラリを追加

2.「スクリプトID」欄に以下のIDを入力後「検索」をクリックし、必要な設定をおこない「追加」をクリック

スクリプトID:
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav

ライブラリ追加

項目 内容
バージョン 最新バージョン(一番大きな数字)
ID 変更なし(ChatWorkClient)

3.「ChatWorkClient」が追加されたら完了

ChatWorkClient追加完了

トリガーの設定

毎日決まった時間にスクリプトを動かしChatworkへ通知するようトリガーを設定します。

1.左側のアイコンから、時計のアイコンをクリック

時計のアイコンをクリック

2.「トリガーを追加」をクリック

「トリガーを追加」をクリック

3.必要な設定をおこない、「保存」をクリック

「保存」をクリック

項目 内容
イベントのソースを選択 時間主導型
時間ベースのトリガーのタイプを選択 日付ベースのタイマー
時刻を選択 通知したい時間を選択※指定した時間の間に実行されます。

※保存後にポップアップブロックが表示された場合は「許可」してください。

ポップアップブロック

4.新しい画面が立ち上がるので、自分のアカウントをクリック

アカウントの選択

5.「許可」をクリックし、画面が自動で閉じるのを待つ

許可をクリック

6.1行追加されたら完了

1行追加されたら完了

動作確認

トリガーとスプレットシートの設定をします。

トリガの設定

スプレットシートの設定

時間まで待ってると、予約内容が飛んできました!

Chatworkの画面

スプレットシートの実行日時も自動で記録されました。

スプレットシート実行日時

まとめ

いかがでしたでしょうか?

投稿する時間のバリエーションを増やしたい場合、今回作成したものと同じものを作成し、トリガーの時間を変更してみてください。

それでは、よいGAS生活を〜

※プログラムの書き方など、具体的な実装方法については「サポート対象外」となります。