CG・映像デザイナー技術ブログ

【ChatWork】時間指定可!チャットワークに予約投稿する方法

ChatWorkに予約投稿機能はまだありません。

ですのでチャットワークAPIとGAS(Google Apps Script)を使っての予約投稿を試してみました。



chatwork-summary-article


【Chatwork】仕事効率化!10個のおすすめの便利機能と拡張機能まとめ

この記事の著者
CGブロガー すいみん

CGブロガー

すいみん

Suimin

プロフィール

某美大の油絵科を卒業後、大手CG映像プロダクションに入社。
その後ゲーム業界に転職。
現在は技術系のCGデザイナーをしています。 書籍:Unity デザイナーズ・バイブル
プロフィール詳細はこちら

ChatWork:[基本]繰り返し使える!チャットワークに予約投稿する方法

Google Apps Scriptを使います。

チャットワークAPIの利用申請

外部のプログラム(Google Apps Script)を使用する為、チャットワークAPIの入手が必要です

参考 Chatwork APIドキュメントChatwork APIドキュメント

Google Apps Scriptの設定とテスト投稿

  1. Googleドライブ>その他>アプリを追加からGoogle Apps Scriptを検索して選択します。
  2. Google Apps Scriptを開いたら、まずリソース>ライブラリからChatWorkClientのプロジェクトキーを検索して追加。バージョンを最新にして保存します。

    M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
    
    参考 GitHub - cw-shibuya/chatwork-client-gas: Chatwork Client for Google Apps ScriptGitHub
  3. コードの入力

    デフォルトで作成されているコード.gsに下記コードを入力します。

    function sendMessageTest() {
    var client = ChatWorkClient.factory({token: 'ここにAPIを入力'});
    client.sendMessage({room_id: ここにルームIDを入力, body: '送りたい内容を入力'});
    }
    
  4. ルームIDは送りたいルームのアドレスに書いてある番号を入力します。

  5. 実行

    再生ボタンまたは実行メニューからsendMessageTestを押してみます。

    すこしラグがありますが、チャットワークに投稿されているはずです。

チャットワークで予約投稿する

  1. ストップウオッチボタンまたはリソース>現在のプロジェクトのトリガーから新しいトリガーを追加します。

  2. 時間主導型、特定の日時を選び日付を入力します。

    2017-02-27 23:26
    
  3. 保存すれば、多少ラグがでますが、その時間にチャットワークへ投稿されます。

    サンプル

    function sendMessageTest() {
    var client = ChatWorkClient.factory({token: 'チャットワークAPIトークン'});
    client.sendMessage({room_id: 送りたいルームID, body: '[To:77777777]nテストです。nnデータのパスです。n[info]C:\Users\ユーザー名\Desktop\[/info]'});
    }
    
    参考 Google Apps ScriptからChatWork APIを使って投稿する - Qiita取得できませんでした

ChatWork:[基本]チャットワークで指定時間に時刻をお知らせ投稿する方法

chatwork+gas(Google Apps Script)で「毎日指定時刻に投稿 + 投稿内容は指定時刻を記述」にしてみました。


理由としては、チャットワークが流れがちなので、日にちごとに区切りを入れたかっただけです。

指定時間に時刻を投稿するコード

function sendMessageMyroom() {
  var client = ChatWorkClient.factory({token: 'チャットワークAPIトークン'});
  var todayDate = new Date();
  var todayDay = Utilities.formatDate( todayDate, 'Asia/Tokyo', 'yyyy年M月d日 h時m分');
  client.sendMessage({room_id: '送りたいルームID', body: '[hr]'+todayDay+'になりました!'});
}

// その日の10時14分にトリガーを設定
function setTrigger() {
  var triggerDay = new Date();
  triggerDay.setHours(10);
  triggerDay.setMinutes(14);
  ScriptApp.newTrigger("main").timeBased().at(triggerDay).create();
}

// その日のトリガーを削除する関数
function deleteTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == "main") {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

// 実行したいスクリプト本体
function main() {
  deleteTrigger();
  sendMessageMyroom();
}

 まとめると

  1. 「チャットワークAPIトークン」と「送りたいルームID」の2箇所を入力
  2. Utilities.formatDate( todayDate, 'Asia/Tokyo', 'yyyy年M月d日 h時m分');で投稿時刻を取得

  3. あとはsetTrigger()を日時指定のトリガーに登録すればOK

ChatWork:[応用]GASで画像アップロード投稿をする方法

GASで画像をアップロードするスクリプトです。コードは下記になります。

結果です。

※公式ドキュメントからGASに変換するの地味に時間かかりました。
参考 エンドポイント: /roomsChatwork APIドキュメント

ChatWork:[応用]スプレッドシートから予約投稿+画像アップロードする方法

単発でこの時期に投稿したい!と決まっていることの予約投稿に使えそうです。

下記の記事のコードを使います。

参考 GASでつくるChatwork予約投稿(スケジュール投稿)機能 | コンサルママとノマドパパコンサルママとノマドパパ

スプレッドシートの準備

日時の記述は

2019/07/08 23:30:00

みたいな感じです。

スクリプトが無事実行されると投稿日時に時刻が挿入されます。

失敗すると記述が消えてしまうので注意。

GASの記述

基本的には前日の画像アップロードの記述を足しただけです。

アップロードするデータがGoogleドライブに事前に入れておきます。

参考 Content-Typeの一覧 - Qiita取得できませんでした

最終的なコード

スクリプトを記入したらトリガーに10分間隔で登録しておきましょう!

以上、すいみん(@cg_method)でした!