【GAS】ガントチャートの進捗が変更されたらChatworkに送信したかった


①スプレッドシートでガントチャートを作る
②ガントチャートに管理上必要なカラムを追加
③進捗が即全体に周知できるように、Chatworkに通知したい

③にあたり、進捗が更新されたら任意の内容をChatworkに飛ばすbotをGASを使って作成した。

その時のメモ。
大体コピペさせていただいた。

gas

var status_column = 7; //スプレッドシートのG列が編集された時のみ通知したい。

/**
 * メイン処理
 *
 * 取り出したデータをCWに送信する
 * トリガーは更新時
 *
 */
function postSheetChange(){
  const value = getValue();
  var client = ChatWorkClient.factory({token:"cw_API_token"}); //Chatwork API

  if (value) {
   client.sendMessage({  //メッセージの投稿を行う
   room_id: roomID, // room_ID
   body:value }); 
   }

}

/**
 * スプレッドシートから必要なデータを取り出す
 *
 */
function getValue(){  
  var notifySheet = SpreadsheetApp.getActiveSpreadsheet();
  var active_sheet = SpreadsheetApp.getActiveSheet();
  var my_cell = active_sheet.getActiveCell();
  var active_sheet_column = my_cell.getColumn();
  var rowNum = my_cell.getRow();

  var data =
'WBS:'+ notifySheet.getRange('A' + rowNum).getValue()+ '\n' 
+'タスク:' + notifySheet.getRange('B' + rowNum).getValue() + notifySheet.getRange('C' + rowNum).getValue() + '\n' 
+'ステータス:' + (notifySheet.getRange('G' + rowNum).getValue())*100 + '%' + '\n'
+'該当のスプレッドシートのURL';

  if (active_sheet_column !== status_column){
    return ;
  }

  return data;

}

function all() { //複数の関数を順番に実行するための関数を用意
  getValue();
  postSheetChange();

 }




参考

ガントチャートアドオン

Chatworkライブラリ

更新時、Slackに通知する方法