実現したいこと
指定した日に自動でスプレッドシートに入力した内容を
チャットワークのタスクへ追加するGASを教えていただきたいです
この画像のようにタスク投稿日にタスク期限の付いたタスクを追加したいです
前提
調べて出てきたのはタスクの期日指定なしの自動追加や
毎日 毎月、毎週などの設定はありましたが
決まった日にタスクを追加する内容が見つけられませんでした
発生している問題・エラーメッセージ
該当のソースコード
function addRegularTasks() { var mySheet=SpreadsheetApp.getActiveSheet(); var maxRow=mySheet.getDataRange().getLastRow(); var myVars=mySheet.getDataRange().getValues(); var token = 'APIトークン'; //チャットワークAPIトークン var date = new Date(); var limit = date.getTime()/1000; limit = limit.toFixed(); for(var i=2;i<=maxRow;i++){ if(myVars[i-1][4-1]="毎日"){ var body = myVars[i-1][1-1]; //タスク内容 var room_id = myVars[i-1][2-1]; //ルームID var to_ids = myVars[i-1][3-1]; //アカウントID addTask(token,room_id,body,limit,to_ids); } } }
試したこと
上のソースコードを参考に日付を設定しようとしましたが私には難しかったです
補足情報(FW/ツールのバージョンなど)
どうぞよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
既に回答がありますので、
こちらは、このような例もあるという参考にしてみてください。
シートから取得した値の配列(myVars)をフィルター処理で
タスク投稿日が今日と一致する要素のみの配列に再生成して、
各データからタスク投稿しています。
JavaScript
1function addRegularTasks() { 2 //初期設定 3 var mySheet=SpreadsheetApp.getActiveSheet(); 4 var myVars=mySheet.getDataRange().getValues(); 5 var token = TOKEN; //チャットワークAPIトークン 6 //今日の日付(時刻を除く)の経過ミリ秒数の値 7 var todayTime = new Date().setHours(0, 0, 0, 0); 8 //タスク投稿日の経過ミリ秒数が今日と一致する行を抽出 9 myVars = myVars.filter(v => new Date(v[1-1]).getTime() == todayTime); 10 //抽出後の各行の値からタスク通知(該当なしなら何もしない) 11 myVars.forEach(v => { 12 var body = v[4-1]; //タスク内容 13 var room_id = v[2-1]; //ルームID 14 var to_ids = v[3-1]; //アカウントID 15 var date = new Date(v[5-1]); //タスク期限 16 var limit = date.getTime()/1000; 17 limit = limit.toFixed(); 18 addTask(token,room_id,body,limit,to_ids); 19 }); 20}
投稿2023/08/26 06:54
総合スコア791
0
ベストアンサー
自動でタスク追加というのが、どういうことをご希望されているのかわからなかったので、
スクリプトを実行したときに実行した日の日付と同じ日付がA列にあれば、
その行のデータからタスクを投稿するスクリプトの例です。
なお、質問でご提示いただいたスクリプトの修正ではありませんが、
addTask(...)のところは、引数の順序を合わせてあります。
例えば、トリガーで午前9時から午前10時の間などと時間帯を指定して
1日1回実行するように設定しておけば、その時間帯に自動実行されると思います。
JavaScript
1function noticeTask() { 2 const token = 'APIトークン'; 3 // const ss = SpreadsheetApp.openById(SS_ID); 4 // const sheet = ss.getSheetByName(SHEET_NAME); 5 const sheet = SpreadsheetApp.getActiveSheet(); 6 // const values = sheet.getDataRange().getValues();//値で処理 7 const values = sheet.getDataRange().getDisplayValues();//文字列で処理 8 values.splice(0, 1);//見出し行を除外 9 const today = new Date();//今日の日付 10 // today.setHours(0, 0, 0, 0);//時刻をクリア(値で処理) 11 const todayStr = Utilities.formatDate(today, 'JST', 'yyyy/MM/dd');//日付を文字列に(文字列で処理) 12 for (let i = 0; i < values.length; i++) { 13 // const date = new Date(values[i][1 - 1]);//値で処理 14 const dateStr = values[i][1 - 1];//文字列で処理 15 //タスク処理日が今日であるとき 16 // if (today.getTime() == date.getTime()) {//値で処理 17 if (todayStr == dateStr) {//文字列で処理 18 //ルームID 19 const roomId = values[i][2 - 1];//B列 20 //タスクの担当者 21 const userId = values[i][3 - 1];//C列 22 //タスクの本文を作成 23 let message = '[info][title]'; 24 // message += values[i][?? - 1];//??列(タイトル) 25 message += 'タイトルのテスト';//タスクのタイトル 26 message += '[/title]'; 27 message += values[i][4 - 1];//D列(タスク本文) 28 message += '[/info]'; 29 message += '※注釈のテスト';//タスクの注釈 30 //タスク期限 31 const dateLimit = new Date(values[i][5 - 1]);//E列 32 let limit = dateLimit.getTime() / 1000; 33 limit = limit.toFixed(); 34 //タスクの追加 35 addTask(token, roomId, message, limit, userId); 36 } 37 } 38}
(追記)
タスク内容の追記事項をタスク内容に続けて挿入する場合の修正例です。
★の行を追加または変更します。
JavaScript
1 let message = '[info][title]'; 2 // message += values[i][?? - 1];//??列(タイトル) 3 message += 'タイトルのテスト';//タスクのタイトル 4 message += '[/title]'; 5 message += values[i][4 - 1];//D列(タスク本文) 6 message += '\n';//改行を一つ挿入(★行追加) 7 message += values[i][5 - 1];//E列(タスク追記)(★行追加) 8 message += '[/info]'; 9 message += '※注釈のテスト';//タスクの注釈 10 //タスク期限 11 const dateLimit = new Date(values[i][6 - 1]);//F列(★変更[5 - 1] → [6 - 1])
投稿2023/08/26 05:32
編集2023/08/30 06:36総合スコア89
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/28 02:01
2023/08/28 03:48
2023/08/28 08:09
2023/08/28 08:14
2023/08/28 08:29
2023/08/28 08:37
2023/08/29 00:54
2023/08/29 04:13
2023/08/30 04:52
2023/08/30 04:56
2023/08/30 05:16
2023/08/30 06:36
2023/08/30 06:50
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/28 02:47
2023/08/28 02:54 編集
2023/08/29 04:15