2016-09-27 35 views
0

因此,我正在編寫一個腳本,它需要從Google電子表格中讀取一個時間值並使用它。我試圖運行測試函數來確保提取的值是正確的,但看起來這些值與電子表格中反映的值不同。在Google電子表格上騰出時間

輸入

function testTime(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("TimeSheet"); 
    var time = sheet.getRange(2,1).getValue(); 
    //value on the sheet is 10:00:00 AM 
    Logger.log(time); 
    Logger.log(time.toTimeString()); 
} 

輸出

Sat Dec 30 09:30:59 GMT+07:36 1899 
09:54:17 GMT+0800 (HKT) 

的時間應該是10:00:00而被反射爲9點54分17秒,而不是其是第一奇怪的錯誤。

其次,無論如何,我可以提取實際值「10:00:00 AM」,甚至更簡單的格式「10:00」?

編輯:

我已經找到一種方法來解決第二個問題,並獲得所需格式的時間。但是,與時間還是有一些奇怪的互動。我已經添加了2條線,它的各個輸出

所有的記錄行

Logger.log(Utilities.formatDate(time, "GMT+07:37", "HH:mm")); 
    Logger.log(Utilities.formatDate(time, "GMT+08:00", "HH:mm")); 
    Logger.log(time); 
    Logger.log(time.toTimeString()); 

輸出

10:00 
10:23 
Sat Dec 30 10:00:00 GMT+07:36 1899 
10:23:18 GMT+0800 (HKT) 

在電子表格設置,

區域設置=美國

時間區=(GMT + 08:00)香港

+0

這看起來像是一個時區問題,你是如何得到格林威治時間+7:36的時區?!你能查看文件>電子表格設置中的時區設置以及時間的全部值作爲數字嗎? –

+0

所以我找到了一種獲得所需時間格式的方法。現在真正的問題是時間的正確性。根據電子表格設置,Locale是美國的,時區是(GMT + 08:00)香港。我修改了日誌記錄,它給了我以下輸出。 (新)第一次日誌格式正確:10:23 第二次日誌與上面相同:星期六12月30日10:00:00 GMT + 07:36 1899 第三次日誌同上:10:23:18 GMT + 0800 (HKT) – CHEWWWWWWWWWW

+0

非常有趣,在腳本編輯器中,如果你去文件>項目屬性那裏的時區是什麼?你有任何用戶屬性或腳本屬性設置? –

回答

2
  1. 如果要具有完全相同的值,如圖中的電子表格 細胞,使用var time = sheet.getRange(2,1).getDisplayValue();

  2. 另外,還可以通過使用 split(" ")方法,然後結合元件掰開長日期/時間字符串從任何你想要的方式從結果數組。

+0

哦,我的天啊,那個getDisplayValue()方法創造了奇蹟。非常感謝。我完全不需要玩時區。 – CHEWWWWWWWWWW

0

在試驗電子表格和腳本文件中的Utilities.formatDate和Time Zone設置後,我找到了解決這兩個問題的解決方案。

  1. 問題與時間

即使我在新加坡,我給自己定的時區(GMT + 8:00)臺北,它給了我正確的時間是10: 00:00 AM。不知道爲什麼,但我想它的工作原理

  • 問題與格式
  • 我只是用

    Utilities.formatDate(time, "GMT+08:00", "HH:mm")); 
    

    這給了我希望的格式,它是

    10:00 
    
    相關問題