閲覧いただきありがとうございます。
アドバイス、ご回答のほうよろしくお願い致します。
実現したいこと
Google Apps Script上にて以下のことをしようと取り組んでいます。
- PocketのAPIで記事情報を取得
- 取得する際に日時を指定して対象を絞り込む
発生している問題
上記の「2」で日時指定する際にUNIXタイムスタンプを使用する必要があるのですが、日時からUNIXタイムスタンプへの変換のところで結果が思うようにならず詰まっています。下記が該当部分のコードです。
GoogleAppsScript
1// 前日の日付を取得 2var yesterday = new Date(); 3yesterday.setDate(yesterday.getDate() - 1); 4var year = yesterday.getFullYear(); 5var month = ("0" + (yesterday.getMonth() + 1)).slice(-2); // 桁を2桁に加工 6var date = ("0" + yesterday.getDate()).slice(-2); // 桁を2桁に加工 7 8// UNIXタイムスタンプに変換 9yesterday = year + "/" + month + "/" + date; 10yesterday = Date.parse(yesterday + " 00:00:00 GMT+0900"); // 年月日は「2019/08/30」が入っているという想定 11Logger.log(yesterday); // 1.5670908E12
変数yesterday
に最終的に入る値が「1567090800000」となるのが正常なのかなと思っています。しかし、GAS上で実行すると「1.5670908E12」となってしまうため、APIに渡す値として使用できない状態です。値としてみると.
を除けば途中までは共通点があるので、GAS上で何かしらの変換などの処理が行われてしまっているのでしょうか?
上記のコードをローカルのHTMLに記述して実行したときは結果が「1567090800000」となりました。
下記のコードも書いて試したのですが結果は同じでした。
GoogleAppsScript
1var today = new Date(); 2yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1); 3Logger.log.log(yesterday.getTime());
回答を踏まえて修正したコード
GoogleAppsScript
1var yesterday = new Date(); 2yesterday.setDate(yesterday.getDate() - 1); 3var year = yesterday.getFullYear(); 4var month = ("0" + (yesterday.getMonth() + 1)).slice(-2); // 桁を2桁に加工 5var date = ("0" + yesterday.getDate()).slice(-2); // 桁を2桁に加工 6 7// UNIXタイムスタンプに変換 8yesterday = year + "/" + month + "/" + date; 9yesterday = Date.parse(yesterday + " 00:00:00 GMT+0900"); // 年月日は「2019/08/30」が入っているという想定 10yesterday = yesterday / 1000; // 1行上で出力されるのはミリ秒なので1000で割って秒にする。ミリ秒だとPocketAPIから記事データが返ってこない。 11 12Logger.log(yesterday); // 1.5670908E9 指数表記 13Logger.log(yesterday + ""); // 1567090800 整数表記 数値ではなく文字列として扱うことで整数で表示できる 14Logger.log(yesterday.toFixed()); // 1567090800 toFixedメソッドを使用することでも整数表記にできる

回答1件
あなたの回答
tips
プレビュー