【GAS】スプレットシートの内容をChatworkに複数のタスクとして追加する
※投稿内容は個人の学習目的の記事であり、所属組織とは一切関係ありません。
Chatwork公式ドキュメントではございませんので、自己責任でご利用ください。
こんにちわ、さかぐち(@sakaguchi_mamii)です。
ChatworkにはTODOを管理する「タスク」機能があります。
タスクをまとめて追加したい場面がありますが、標準機能では準備されていません。
そこで、今回はGASを利用して、スプレットシートの内容をまとめてタスク登録しようと思います。
APIトークンを取得する
ルームIDを取得する
タスクを登録するグループチャットのルームIDを取得する。
グループチャットのURL末尾の数字がルームIDとなります。
タスク担当者のアカウントIDを取得する
Toの後ろの数字がアカウントIDとなります。
ライブラリを読み込む
Chatworkにタスクを登録する部分は「Chatwork Client for Google Apps Script」を利用します。
https://github.com/cw-shibuya/chatwork-client-gas
プロジェクトキー: M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
スプレットシートを準備する
タスクを登録する用のシート(シート名:タスク)
※スクリプト内でシート名と情報が記載されているセルの場所を指定し情報を取得します。
アカウントID等、固定の情報を記載するシート(シート名:基本情報)
※スクリプト内でシート名と情報が記載されているセルの場所を指定し情報を取得します。
※スクリプト内でシート名を指定し、情報を取得します。
スクリプト作成
const token = 'APIトークン';
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 基本情報を取得
const basic_info = ss.getSheetByName('基本情報');
var room_id = basic_info.getRange(2, 1).getValue();
var account_id = basic_info.getRange(2, 2).getValue();
// タスク情報を取得
const task_list = ss.getSheetByName('タスク');
const lastRow = task_list.getLastRow();
// 記載がある分だけ繰り返し
for(let i = 2; i <= lastRow; i++) {
// 内容
var body = task_list.getRange(i, 1).getValue();
// 期日
var limit = new Date(task_list.getRange(i, 2).getValue());
limit = (new Number(limit.getTime() / 1000)).toFixed();
// タスク追加
var param = {
limit: limit,
body: body,
room_id: room_id,
account_id: account_id
}
addTask(param);
}
}
// タスク追加処理
function addTask(param) {
var client = ChatWorkClient.factory({token: token});
client.sendTask({
limit: param.limit,
to_id_list:[param.account_id],
body: param.body,
room_id: param.room_id
});
}
テスト
const token = 'APIトークン';
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 基本情報を取得
const basic_info = ss.getSheetByName('基本情報');
var room_id = basic_info.getRange(2, 1).getValue();
var account_id = basic_info.getRange(2, 2).getValue();
// タスク情報を取得
const task_list = ss.getSheetByName('タスク');
const lastRow = task_list.getLastRow();
// 記載がある分だけ繰り返し
for(let i = 2; i <= lastRow; i++) {
// 内容
var body = task_list.getRange(i, 1).getValue();
// 期日
var limit = new Date(task_list.getRange(i, 2).getValue());
limit = (new Number(limit.getTime() / 1000)).toFixed();
// タスク追加
var param = {
limit: limit,
body: body,
room_id: room_id,
account_id: account_id
}
addTask(param);
}
}
// タスク追加処理
function addTask(param) {
var client = ChatWorkClient.factory({token: token});
client.sendTask({
limit: param.limit,
to_id_list:[param.account_id],
body: param.body,
room_id: param.room_id
});
}
スクリプト実行!
スプレットシートに記載したタスクが登録されました!
最後に
無事にタスクを登録することができました。(よかった)
久々にコードを書いて公開しているので、間違っている場所や分かりづらい点があればご指摘ください!
今後やりたいこと!
- 指定のキーワードをグループチャットに投稿すると自動でタスクが登録される仕組み (前提条件:該当のグループチャットにタスク登録BOTが存在していること)
Author And Source
この問題について(【GAS】スプレットシートの内容をChatworkに複数のタスクとして追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/sakaguchi_mami/items/601e0e44a6d7d9dbe889著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .