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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

2752閲覧

スプレッドシートで該当日と内容をCWに送信

joeblack4649

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/06/14 14:55

前提・実現したいこと

初心者でわからないことだらけですが、調べながらスプレッドシートで作った日報をチャットワークへ送信するスクリプトを作っています。
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; }

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

同じように Moment.js を使ってB列の日付のフォーマットを揃えてから一致を確認でよいんじゃないでしょうか。

GAS

1var formattedcheckDate = Moment.moment(mySheet.getRange(i,2).getValue()).format('YYYY/MM/DD'); 2 3if(formattedcheckDate === formattedDate){ 4

投稿2020/06/17 01:21

sawa

総合スコア3002

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

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

joeblack4649

2020/06/17 06:26

ありがとうございます。無事動作いたしました!助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問