Есть ли способ автоматически обновлять даты в скрипте до последних месяцев первого и последнего дня? - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь найти способ, чтобы эти две даты менялись в начале каждого месяца на 1-й и последний день предыдущего месяца.

У меня есть нужные даты обновления на листе, но я могуне используйте эти ячейки в качестве ссылок.

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 голосов
/ 18 октября 2018

Вы можете использовать это, если хотите использовать локальное время вашего сервера:

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('');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...