簡體   English   中英

電子表格應用轉換Date()

[英]Spreadsheet App converting Date()

問題:電子表格無法將輸入日期識別為Date(),因此我無法在Apps腳本中從中獲取.getTime()。

問題:您知道為什么嗎?

結果:這是我正在運行的腳本的一部分:

dates.map(function(inp) {
  if (inp != undefined && inp !== ""){
    inp = new Date(inp.getTime() - (date.getTimezoneOffset()*60000);
    return inp
  }
});

其中dates是指范圍: dates = sheet.getRange(2,1, lastR, 1).getValues();

當前,此范圍的手動輸入值為“ 2017-05-20”,電子表格會自動將該日期識別為“ 2017年5月20日星期六00:00:00 GMT + 0200(CEST)”

錯誤內容如下:

TypeError:在對象Sat May 20 2017 00:00:00 GMT + 0200(CEST)中找不到函數getTime。 (第86行,文件“代碼”)詳細信息關閉

我在整個腳本中嘗試了100萬種方法,以使Spreadsheet停止將輸入值自動轉換為日期,以便至少可以創建時間戳或類似內容。 有誰知道為什么要這么做嗎?

即使您在一個getValues()范圍內調用getValues() ,它仍將是一個數組數組。

令人困惑的是,GAS會嘗試提供幫助,並在單元素數組中顯示唯一的值。

從行中提取第一個元素應該可以解決此問題。

dates.map(function(row) {
  var inp = row[0];
  if (inp != undefined && inp !== ""){
    inp = new Date(inp.getTime() - (date.getTimezoneOffset()*60000);
    return inp
  }
});

如果您堅持通過Array.prototype.map()完成所有操作,則以下代碼可能會起作用。 我忽略了您的日期操作邏輯,而是在單元格中的日期上增加了5天。 為了更新值,您必須將Array.prototype.map()返回的值分配給變量。 另外,對空字符串和“ undefined”進行2次單獨檢查是多余的,因為JavaScript實際上認為它們都為“ false”(不幸的是,這同樣適用於0,所以要小心)

       function getDates() {

          var ss = SpreadsheetApp.getActiveSpreadsheet();
          var sheet = ss.getSheets()[0];
          var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1);
          var values = range.getValues();

          var newValues = values.map(function(row) {

          var newRow = row.map(function(value){

          if (value){

          value = new Date(value.getTime() + 3600000*24*5) // adding 5 days

          return value;

        }

   });

   return newRow;

  });

   range.setValues(newValues);


}

我最終接受了羅賓的建議,並做了以下工作,該工作有效:

 rows.map(function(r) {
        r.day = new Date(r.day.getTime() - (date.getTimezoneOffset()*60000));
        r.day = r.day.toISOString().split('T')[0];
        return r
      })

其中,date全局定義為date = new Date() ,“行”其中包含數據的行,“ day”是(我在腳本前面定義的第一行[0]的)列名我試圖更改的日期列。

再次感謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM