前提・実現したいこと
初心者でわからないことだらけですが、調べながらスプレッドシートで作った日報をチャットワークへ送信するスクリプトを作っています。
B列にある日付データの中から今日の日付を抽出しC列の日報データをチャットワークに送信したいのですがうまくいきません。
発生している問題
B1の日付(today)と一致する行を探しても一致する行が見つからず、C列を返せません。
ログを見ると取得した日付データが細かすぎて同一になっていないので抽出ができないのではないかと想像しています。そこで現在日時を取得するのにMoment.jsを利用しフォーマットをログ1行目のように整えました。しかしループ内で抽出しているデータのフォーマットを整える方法がわかりません。
[20-06-14 07:27:32:157 PDT] 2020/06/14
[20-06-14 07:27:32:227 PDT] Mon Jun 01 2020 00:00:00 GMT+0900 (日本標準時)
[20-06-14 07:27:32:235 PDT] Tue Jun 02 2020 00:00:00 GMT+0900 (日本標準時)
[20-06-14 07:27:32:242 PDT] Wed Jun 03 2020 00:00:00 GMT+0900 (日本標準時)
・
・
・
該当のソースコード
function onOpen() { SpreadsheetApp .getActiveSpreadsheet() .addMenu('日報送信', [ {name: 'CW送信', functionName: 'cwsend'}, ]); } function cwsend() { var mySs=SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得 var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 var lastRow=mySheet.getDataRange().getLastRow(); //対象となるシートの最終行を取得 var employeeName=mySheet.getRange(1,1).getValue(); //記入者の名前を取得 var date = Moment.moment(); //現在日時を取得 var formattedDate = date.format("YYYY/MM/DD"); Logger.log(formattedDate); for(var i=2; i<=lastRow; i++){ console.log(mySheet.getRange(i,2).getValue()); if(mySheet.getRange(i,2).getValue() === date){ //B1の送信日付が同じ場合 var Impression = mySheet.getRange(i,3).getValue(); //日報取得 var strBody = Date + " の " + employeeName + "の業務日報です。" + "\n\n"; if(Impression != ''){ strBody += Impression + "\n"; } var cwClient = ChatWorkClient.factory({token: 'XXXXXXXXXXXXXXXXXXXXXXXXXX'}); //チャットワークAPI cwClient.sendMessage({ room_id:XXXXXXXXX, //ルームID body:strBody }); Browser.msgBox("日報メールを送信しました。本日もお疲れ様でした。"); return i; } } Browser.msgBox("NG文"); return 0; }
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 06:26