有没有一种方法可以将脚本中的日期自动更新为前几个月和最后一天?

时间:2018-10-17 15:01:06

标签: javascript datetime google-apps-script google-sheets

我正在尝试找到一种方法,以使这两个日期在每个月初至前一个月的第一天和最后一天发生变化。

我希望在工作表中更新日期,但不能使用这些单元格作为参考。

function export_gcal_to_gsheet(){
  var mycal = "oli@waggerspack.com";
  var cal = CalendarApp.getCalendarById(mycal);

  var events = cal.getEvents(
      new Date("1 September, 2018 00:00:00 GMT"), // this date
      new Date("30 September, 2018 23:59:59 GMT"), // and this one
      {search: 'Keba & Jenga'});

  var sheet = SpreadsheetApp.getActiveSheet();

  var header = [["Invoice"]]
  var range = sheet.getRange(1,1,1,1);
  range.setValues(header);

  for (var i = 0; i < events.length; i++) {
    var row = i + 12;
    var myformula_placeholder = '';

    var details = [[events[i].getDescription(), events[i].getStartTime()]];
    var range = sheet.getRange(row, 1, 1, 2);
    range.setValues(details);

    var cell = sheet.getRange(row, 3);
    cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
    cell.setNumberFormat('');
  }
}

1 个答案:

答案 0 :(得分:0)

如果要使用服务器的本地时间,可以使用以下方法:

var today=new Date();
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0); 
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0); 
endDate.setSeconds(-1);

document.write(startDate);
document.write('<br>');
document.write(endDate);

如果您希望始终使用格林尼治标准时间+0的时间,而不是必须使用以下代码:

var today=new Date();
today=new Date(today.valueOf() +  today.getTimezoneOffset() * 60000);
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0); 
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0); 
endDate.setSeconds(-1);
console.log(today);
console.log(startDate);
console.log(endDate);

您的代码将是这样(本地时间):

function export_gcal_to_gsheet(){
  var mycal = "oli@waggerspack.com";
  var cal = CalendarApp.getCalendarById(mycal);

var today=new Date();
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0); 
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0); 
endDate.setSeconds(-1);

  var events = cal.getEvents(
      startDate, // this date
      endDate, // and this one
      {search: 'Keba & Jenga'});

  var sheet = SpreadsheetApp.getActiveSheet();

  var header = [["Invoice"]]
  var range = sheet.getRange(1,1,1,1);
  range.setValues(header);

  for (var i = 0; i < events.length; i++) {
    var row = i + 12;
    var myformula_placeholder = '';

    var details = [[events[i].getDescription(), events[i].getStartTime()]];
    var range = sheet.getRange(row, 1, 1, 2);
    range.setValues(details);

    var cell = sheet.getRange(row, 3);
    cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
    cell.setNumberFormat('');
  }
}

或者您的代码可能是这样的(GMT + 0时间):

function export_gcal_to_gsheet(){
  var mycal = "oli@waggerspack.com";
  var cal = CalendarApp.getCalendarById(mycal);

 var today=new Date();
today=new Date(today.valueOf() +  today.getTimezoneOffset() * 60000);
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0); 
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0); 
endDate.setSeconds(-1);


  var events = cal.getEvents(
      startDate, // this date
      endDate, // and this one
      {search: 'Keba & Jenga'});

  var sheet = SpreadsheetApp.getActiveSheet();

  var header = [["Invoice"]]
  var range = sheet.getRange(1,1,1,1);
  range.setValues(header);

  for (var i = 0; i < events.length; i++) {
    var row = i + 12;
    var myformula_placeholder = '';

    var details = [[events[i].getDescription(), events[i].getStartTime()]];
    var range = sheet.getRange(row, 1, 1, 2);
    range.setValues(details);

    var cell = sheet.getRange(row, 3);
    cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
    cell.setNumberFormat('');
  }
}