2016-02-18 60 views
1

我正在使用Google Spreadsheet在日常日誌中記錄某些內容。爲了方便用戶使用我的同事,我儘可能地將電子表格製作爲「界面 - 界面」,基本上它就像一個表格。formatDate()給出正確的日期-1天(Google Apps腳本)

此「表單」具有一個提交按鈕,用於保存工作表並創建一個新工作表(模板副本)。

問題是保存的工作表應該與單元格中的日期一起保存。 但它實際日期前一天保存日期...(!)我正在努力找出原因。

下面是來自谷歌Apps腳本按下提交按鈕,當我打電話的代碼:

function renameSheet() { 
var ShootName = SpreadsheetApp.getActiveSheet().getRange("G8").getValue(); 
var DateName1 = SpreadsheetApp.getActiveSheet().getRange("A8").getValue(); 
var newdate = new Date(SpreadsheetApp.getActiveSheet().getRange("A8").getValue()); 
var Datename2 = Utilities.formatDate(newdate, "PST", "yyyy-MM-dd"); 
var NewName = Datename2 + " - " + ShootName; 
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(NewName); 
var oldSheet = ss.getActiveSheet(); 
// create a duplicate of the template sheet 
ss.setActiveSheet(ss.getSheetByName("Original0")); 
var newSheet = ss.duplicateActiveSheet(); 
newSheet.activate(); 
ss.moveActiveSheet(1); 
newSheet.setName("NewLog"); 

} 

如果單元格A8的值爲「16年12月25日」 - 該表將被命名爲「12.24。 16" 。

如果有人有適當的甚至髒的quickfix,我很樂意聽到它。

回答

2

你硬編碼在此行中時區:

var Datename2 = Utilities.formatDate(newdate, "PST", "yyyy-MM-dd"); 

但是這並沒有考慮到夏令和日期僅在電子表格中的值總是在00:00:00小時這麼一個小時輪班能更改日期...

與自動值這樣的替換:

var Datename2 = Utilities.formatDate(newdate, Session.getScriptTimeZone(), "yyyy-MM-dd"); 
+0

謝謝嗶嘰。這完美的作品! – Steffen0

相關問題