これは私を夢中にさせていますが、それは単純なものでなければなりません:-)
スプレッドシートで Google スクリプトを実行しており、現在の日付を含む文字列を入力したいと考えています (例: "Produced at: 06 Oct 2016 @ 18:10")。
私が使用しているテスト コードと Logger.log の例を以下に示します。
私の問題は、 Utilities.Formatdate からの結果が、実際の時間に関係なく常に同じ値を返すことです。
アイデアはありますか?TIA:-) 乾杯...スティーブ
function TEST() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
Logger.log(new Date());
var nowdate = new Date();
Logger.log (nowdate);
var nowdatestr = ("Produced at: " +Utilities.formatDate(nowdate, "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (nowdatestr);
// cell.setValue(nowdatestr);
Logger.log (Utilities.formatDate(new Date(), "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (cell.getValues());
Logger.log(new Date());
}
ログ結果:
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:024 AEST] Produced at: 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:024 AEST] 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:081 AEST] [[Title]]
[16-10-06 18:46:58:082 AEST] Thu Oct 06 18:46:58 GMT+10:00 201
+++++++++++ Vytautas と Ruben からの以下の投稿を追加。
@Vytautas: 整理されたバージョンでは、実際の現在の日付のログが省略されているため、私が抱えている問題が示されます。
だから使用:
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:MM'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
ログを与える:
[16-10-07 12:31:57:265 AEST] Produced at: 07 Oct 2016 @ 12:10
[16-10-07 12:31:57:315 AEST] real new date and time is: Fri Oct 07 2016 12:31:57 GMT+1000 (AEST)
[16-10-07 12:31:57:448 AEST] [[Produced at: 07 Oct 2016 @ 12:10]]
@Ruben:各 new Date() 呼び出しの前に Utilities.sleep(1000) を挿入しても違いはありませんでした。
たぶん、私が最初に思ったほど単純なことではないかもしれません... :-)
+++++++++++++++++++
最終的に動作するテスト コード (Ruben に感謝) は次のとおりです (HH:MM を HH:mm に変更):
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:mm'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
ありがとう!