首页 > 解决方案 > 合并后表格中的 GAS 脚本更改日期和时间

问题描述

我在几张纸中有一个日期列,当我出于某种原因将此表格中的数据合并到另一个电子表格时,它会为每个日期增加 10 个小时。

function runTransferToMasterSheet() {
  var folder = DriveApp.getFolderById("folderID");
  var contents = folder.getFiles();
  var file; 
  var data;
  
  var sheetMaster = SpreadsheetApp.openByUrl('sheetURL').getSheets()[0];
  
  var range = sheetMaster.getRange("A2:G120000");
  range.clear();
  while(contents.hasNext()){
    file = contents.next();    
    var sheet = SpreadsheetApp.openById(file.getId()).getSheets()[0];
    
    // delete row with columns names
    sheet.deleteRow(1);

    var data = sheet.getDataRange().getValues();
    
    setDataToMaster(sheetMaster, sheet, data);
  }
  
}

function setDataToMaster(sheetMaster, sheet, data) {
  var sheetMaster = sheetMaster; 
  var sheet = sheet;
  var startRow = 1; 
  var data = data;
  
  if (sheetMaster.getDataRange().getValue() == null) {
    sheetMaster.getRange(2, 1, data.length, 7).setValues(data);
  } else {
    sheetMaster.getRange((sheetMaster.getLastRow() + 1), 1, data.length, 7).setValues(data);
  }
}

将合并的一张表中的日期 2018 年 6 月 13 日 11:10:00

最终表格中的日期 2018 年 6 月 13 日 21:10:00

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


出于某种原因,我合并的表格(我使用一些 api 得到它们)有错误的时区,所以决定是在合并使用之前:

mySpreadSheet.setSpreadsheetTimeZone(Session.getScriptTimeZone());


推荐阅读