使用 Google Sheets API batchUpdate 将数据从一个电子表格复制到另一个电子表格时日期格式混乱

Date format messed up while copying data from one spreadsheet to another using Google Sheets API batchUpdate

我正在将数据集从一个电子表格复制到另一个电子表格,除日期外一切正常。 在源文件中,日期类似于“2020-07-27”,但在我 运行 脚本之后,目标文件中的日期格式完全不同,如“Sun Jul 26 18:00:00 GMT- 04:00 2020”。 我应该怎么做才能按原样复制日期 - YYYY-MM-DD?

我的代码:

  function myFunction() {
    
      var sheet_source_values = SpreadsheetApp.openById("1JfjXPPFj08p6cxjdsdcBhTMkl6yXLJkhASG0dv4").getSheetByName(Utilities.formatDate(now,"GMT+1", "dd.MM")).getRange('A:AD').getValues()
      var sheet_destination = SpreadsheetApp.openById("GTjEfvjoTJ7U7ZXwYUEnSkKtfudXZuCP0dyq").getSheetByName("Updated_sheet")
      
var request = {
        'responseValueRenderOption' : 'UNFORMATTED_VALUE',
        'valueInputOption': 'RAW',
        'responseDateTimeRenderOption' : 'SERIAL_NUMBER',
        'data': [
          {
            'range': "'Updated_sheet'!" + sheet_destination.getRange(2,1,sheet_source_values.length,sheet_source_values[0].length).getA1Notation(),
            'majorDimension': 'ROWS',
            'values': sheet_source_values
          }
        ]
      };
      Sheets.Spreadsheets.Values.batchUpdate(request, "GTjEfvjoTJ7U7ZXwYUEnSkKtfudXZuCP0dyq");
    }

我尝试更改“responseValueRenderOption”和“responseDateTimeRenderOption”但可以找到解决方案:(

这里的问题不在于表格 API,而在于您从源传播中检索值的方式sheet.

根据getValues方法文档:

getValues - Returns a two-dimensional array of values, indexed by row, then by column. The values may be of type Number, Boolean, Date, or String, depending on the value of the cell.

这样,值将作为 Date 类型检索,但此类型是 Google 默认类型,因此您在目标 sheet 上获得的结果.

为了解决这个问题,我建议您改用 getDisplayValues,因为这将 return 来自源 sheet 的显示值。对于 Sheets API 请求,您可以只保留 'valueInputOption': 'RAW' 选项。

已修改sheet_source_values

var sheet_source_values = SpreadsheetApp.openById("1bGCXCUe6cgyLQRUQrOIAT2BruBH95ybAX7iG_pyk4Q0").getSheetByName("Sheet1").getRange('A1:A4').getDisplayValues();

修改后的工作表API请求

var request = {
    'valueInputOption': 'RAW',
    'data': [{
        'range': "'Updated_sheet'!" + sheet_destination.getRange(2, 1, sheet_source_values.length, sheet_source_values[0].length).getA1Notation(),
        'majorDimension': 'ROWS',
        'values': sheet_source_values
    }]
};

参考