質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1921閲覧

チャットワークへ手動でタスク追加

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/08/07 06:24

編集2020/08/11 09:13

GAS超初心者のため、説明が不足しておりましたらご指摘下さい。

やりたい事
「グループチャット内(A列)の特定の人(B列)にTOでタスク(E/F列の内容)を追加したい」

上記については下記スクリプトで実装できたのですが
「スプレッドシートのG列が"〇"になっている場合」を追加したいのですが
ご回答お待ちしております。

function chatworkAutoPost(){ //***************************************************** //初期設定 //***************************************************** //chatworkのトークン var tkn='ID'; //定期リストが入っているシート名の設定 var sn='定期作業' //スプレッドシートのファイルID var ssId='ID'; //タスクリストの最大の行数(あんまり多いと時間制限にひっかかるよ) var maxRow=1000; //***************************************************** //メインメソッド //***************************************************** var ss=SpreadsheetApp.openById(ssId); var s=ss.getSheetByName(sn); var ld=new Date(); //今日の日付オブジェクト var dt=new Date(); //今日の日付オブジェクト var tanto; var limit=0; var message; for(i=3;i<=maxRow;i++){ var rid = s.getRange(i, 1).getValue(); var flg=getShoriFlg(s.getRange(i, 3).getValue(),dt); if(rid==''){ break; }else{ if(flg==true){ //実際のAPI処理 //タスクの本文を作成 message='[info][title]'; message+=s.getRange(i, 5).getValue(); message+='[/title]'; message+=s.getRange(i, 6).getValue(); message+='[/info]'; message+='※これは自動に投稿されたタスクです'; //タスクの期限を決定 ld=new Date; ld.setDate(dt.getDate()+s.getRange(i, 4).getValue()); limit=ld.getTime()/1000; limit = limit.toFixed(); //タスクの担当者を取得 tanto=s.getRange(i, 2).getValue(); //タスクの追加処理 addTask(tkn,rid,message,limit,tanto); } } }//next } //***************************************************** //タスク追加処理メソッド //***************************************************** function addTask(token,room_id,body,limit,to_ids){ var params = { headers : {"X-ChatWorkToken" : token}, //APIトークン method : "post", payload : { body : body, //タスク内容 limit : limit, //タスク期限 to_ids : to_ids //アカウントID } }; Logger.log(params); //タスク投稿実処理 var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/tasks"; return UrlFetchApp.fetch(url, params); //チャットワークAPIにリクエスト } //***************************************************** //処理すべき日かの判定 //***************************************************** function getShoriFlg(postdate,dt){ var flg=false; var span=postdate.substr(0,4); if(span=="[毎日]"){ flg=true; }else if(span=="[毎週]"){ var d2; switch(postdate.substr(4,1)){ case '月': d2=1; break; case '火': d2=2; break; case '水': d2=3; break; case '木': d2=4; break; case '金': d2=5; break; case '土': d2=6; break; case '日': d2=0; break; } if(dt.getDay()==d2){ flg=true; } }else if(span=="[平日]"){ if((dt.getDay()>=1)&(dt.getDay()<=5)){ flg=true; }else{ flg=false; } }else if(span=="[毎月]"){ if(dt.getDate()==postdate.substr(4,2)){ flg=true; } }else if(span=="[月末]"){ if(new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate()==dt.getDate()){ flg=true; } }else if(span=="[毎年]"){ if((dt.getMonth()+1==1)&(dt.getDate()==1)){ flg=true; } } return flg; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macaron_xxx

2020/08/10 22:49

>どのようなスクリプトを組めば良いでしょうか。 どこまでできているのでしょうか?
macaron_xxx

2020/08/11 02:45

chatworkのtokenなどが見えてしまっているので、今すぐ非公開にしてください。 その上で、tokenなどを伏せ字にして、質問にスクリプトを転記してください。
退会済みユーザー

退会済みユーザー

2020/08/11 03:28

ご指摘ありがとうございます。 スクリプト下記になります。
退会済みユーザー

退会済みユーザー

2020/08/11 03:28

function chatworkAutoPost(){ //***************************************************** //初期設定 //***************************************************** //chatworkのトークン var tkn='ID'; //定期リストが入っているシート名の設定 var sn='定期作業' //スプレッドシートのファイルID var ssId='ID'; //タスクリストの最大の行数(あんまり多いと時間制限にひっかかるよ) var maxRow=1000; //***************************************************** //メインメソッド //***************************************************** var ss=SpreadsheetApp.openById(ssId); var s=ss.getSheetByName(sn); var ld=new Date(); //今日の日付オブジェクト var dt=new Date(); //今日の日付オブジェクト var tanto; var limit=0; var message; for(i=3;i<=maxRow;i++){ var rid = s.getRange(i, 1).getValue(); var flg=getShoriFlg(s.getRange(i, 3).getValue(),dt); if(rid==''){ break; }else{ if(flg==true){ //実際のAPI処理 //タスクの本文を作成 message='[info][title]'; message+=s.getRange(i, 5).getValue(); message+='[/title]'; message+=s.getRange(i, 6).getValue(); message+='[/info]'; message+='※これは自動に投稿されたタスクです'; //タスクの期限を決定 ld=new Date; ld.setDate(dt.getDate()+s.getRange(i, 4).getValue()); limit=ld.getTime()/1000; limit = limit.toFixed(); //タスクの担当者を取得 tanto=s.getRange(i, 2).getValue(); //タスクの追加処理 addTask(tkn,rid,message,limit,tanto); } } }//next } //***************************************************** //タスク追加処理メソッド //***************************************************** function addTask(token,room_id,body,limit,to_ids){ var params = { headers : {"X-ChatWorkToken" : token}, //APIトークン method : "post", payload : { body : body, //タスク内容 limit : limit, //タスク期限 to_ids : to_ids //アカウントID } }; Logger.log(params); //タスク投稿実処理 var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/tasks"; return UrlFetchApp.fetch(url, params); //チャットワークAPIにリクエスト } //***************************************************** //処理すべき日かの判定 //***************************************************** function getShoriFlg(postdate,dt){ var flg=false; var span=postdate.substr(0,4); if(span=="[毎日]"){ flg=true; }else if(span=="[毎週]"){ var d2; switch(postdate.substr(4,1)){ case '月': d2=1; break; case '火': d2=2; break; case '水': d2=3; break; case '木': d2=4; break; case '金': d2=5; break; case '土': d2=6; break; case '日': d2=0; break; } if(dt.getDay()==d2){ flg=true; } }else if(span=="[平日]"){ if((dt.getDay()>=1)&(dt.getDay()<=5)){ flg=true; }else{ flg=false; } }else if(span=="[毎月]"){ if(dt.getDate()==postdate.substr(4,2)){ flg=true; } }else if(span=="[月末]"){ if(new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate()==dt.getDate()){ flg=true; } }else if(span=="[毎年]"){ if((dt.getMonth()+1==1)&(dt.getDate()==1)){ flg=true; } } return flg; }
macaron_xxx

2020/08/11 03:59

読みにくくて仕方ないので、マークダウンで質問に追記してください
退会済みユーザー

退会済みユーザー

2020/08/11 05:03

失礼いたしました。 追記しました。
退会済みユーザー

退会済みユーザー

2020/08/11 13:53

内容、わかりますでしょうか??
guest

回答1

0

ベストアンサー

スプレッドシートのG列が"〇"になっている場合

であれば下記でいいのでは?

js

1if (flg == true && s.getRange(i, 7).getValue() === "〇")

投稿2020/08/11 23:58

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/12 00:36

そのifをどこに入れたら良いのかがわからないのです。
macaron_xxx

2020/08/12 02:24

if (flg == true)を置き換えればよいです。
退会済みユーザー

退会済みユーザー

2020/08/12 03:38

ではなく、この一文を、 私が質問に追加したスクリプトのどこへ挿入したら良いのかがわからない状態です。
macaron_xxx

2020/08/12 03:46

いや、ですから if (flg == true)を置き換えればよいです。
退会済みユーザー

退会済みユーザー

2020/08/12 03:58

ありがとうございます。 後ほど実装してみます。
退会済みユーザー

退会済みユーザー

2020/08/12 07:40

実装できました! 初心者の私にご丁寧に教えてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問