События в списке календаря Google, выходные данные не отображаются в листах Google - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь сгенерировать отчет для отображения текущих событий из календаря, но почему-то не вижу вывод в листах Google. Может кто-нибудь помочь мне с моим кодом ниже? Я искал и настраивал, но не повезло (умопомрачительный банкомат)

function listevents () {

var ss, range, ui, rcalendarId, ask, askDate, askEnd,cal, start, end, events, num, dateString, eStart,sDate, sTime, string, eEnd, eDate, eTime, data;
ss = SpreadsheetApp.openById('SheetIDHERE').getSheetByName('SHEETNAMEHERE');
range = ss.getRange(1,1,1,8).setValues([ ["Date Created","Title","Description","Location","Start Date","End Date", "Id", "Creator"] ]);

ui = SpreadsheetApp.getUi();
ask = ui.prompt('Search for resource calendar list. Enter the resource calendar id');

askDate = ui.prompt('Enter the Start Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');
start = new Date(askDate.getResponseText());
askEnd = ui.prompt('Enter the End Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');

end = new Date (askEnd.getResponseText()); 
cal = CalendarApp.getCalendarById(ask.getResponseText());

events = cal.getEvents(start,end); 
num = events.length;

for (var i = 0; i < num; i ++) {

// Column: Start Date
eStart = events[i].getStartTime();
sDate = eStart.toDateString();
sTime = sDate.toTimeString();
// Column: End Date
eEnd = events[i].getEndTime();
eDate = eEnd.toDateString();
eTime = eDate.toTimeString();
ss.getRange(i+2,1,1,8).setValues[ [events[i].getDateCreated(),
                                events[i].getTitle(),
                                events[i].getDescription(),
                                events[i].getLocation(),
                                sDate + " " + sTime,
                                eDate + " " + eTime,
                                events[i].getId(),
                                events[i].getCreators()] ];

} }

Я ожидаю, что значения будут опубликованы в листах Google.

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Если кто-то заинтересован или может помочь в получении ваших собственных событий календаря, вот код:

function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
options = [
{name:"MENU NAME1",functionName:"YOUR FUNCTION NAME HERE"}
];
ss.addMenu("CUSTOM NAME", options);
}

function calEvents(){
var ss, sheet,range, ui, rcalendarId, ask, askDate,askEnd,cal, start, end, events, num, output, startTime,startDate, startTime1, endTime, endDate, endTime1, dataRow;
ss = SpreadsheetApp.openById('GOOGLE SHEET ID HERE');
sheet = ss.getSheetByName('SHEET NAME HERE');
sheet.clear(); 
range = [];
range.push([ "Date Created","Title","Description","Location","Start Date","End Date", "Id", "Creator" ]);

//ENTER CALENDAR ID HERE
ui = SpreadsheetApp.getUi();
ask = ui.prompt('Search for resource calendar list. Enter the resource calendar id');

//ENTER START DATE HERE
askDate = ui.prompt('Enter the Start Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');
start = new Date(askDate.getResponseText());
askEnd = ui.prompt('Enter the End Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');

end = new Date (askEnd.getResponseText()); 
cal = CalendarApp.getCalendarById(ask.getResponseText());

events = cal.getEvents(start,end); 
num = events.length;

for (var i = 0; i < events.length; i++) {

// Column: Start Date
startTime = events[i].getStartTime();
startDate = startTime.toDateString();
startTime1 = startTime.toTimeString(); 
// Column: End Date
endTime = events[i].getEndTime();
endDate = endTime.toDateString();
endTime1 = endTime.toTimeString(); 

dataRow = []
dataRow.push(events[i].getDateCreated(),
    events[i].getTitle(),
    events[i].getDescription(),
    events[i].getLocation(),
    startDate + " " + startTime1,
    endDate + " " + endTime1,
    events[i].getId(),
    events[i].getCreators())

range.push(dataRow);
}
sheet.getRange(1,1,range.length, range[0].length).setValues(range);
}
0 голосов
/ 22 мая 2019

Как насчет этой модификации?

Очки модификации:

  1. Пожалуйста, используйте toTimeString() для объекта даты.
  2. В вашем скрипте setValues[ [events[i].getDateCreated(),,, из ss.getRange(i+2,1,1,8).setValues[ [events[i].getDateCreated(),,, требуется изменить.

Когда указанные пункты отражаются в вашем сценарии, он становится следующим:

Модифицированный скрипт:

От:
eStart = events[i].getStartTime();
sDate = eStart.toDateString();
sTime = sDate.toTimeString();
// Column: End Date
eEnd = events[i].getEndTime();
eDate = eEnd.toDateString();
eTime = eDate.toTimeString();
ss.getRange(i+2,1,1,8).setValues[ [events[i].getDateCreated(),
                                events[i].getTitle(),
                                events[i].getDescription(),
                                events[i].getLocation(),
                                sDate + " " + sTime,
                                eDate + " " + eTime,
                                events[i].getId(),
                                events[i].getCreators()] ];
Для того, чтобы:
var eStart = events[i].getStartTime();
var sDate = eStart.toDateString();
var sTime = eStart.toTimeString(); // Modified
    // Column: End Date
var eEnd = events[i].getEndTime();
var eDate = eEnd.toDateString();
var eTime = eEnd.toTimeString(); // Modified
ss.getRange(i+2,1,1,8).setValues([ [events[i].getDateCreated(), // Modified
                                events[i].getTitle(),
                                events[i].getDescription(),
                                events[i].getLocation(),
                                sDate + " " + sTime,
                                eDate + " " + eTime,
                                events[i].getId(),
                                events[i].getCreators()] ]); // Modified

Или, я думаю, вы также можете использовать toString() следующим образом.

var eStart = events[i].getStartTime();
var sDate = eStart.toString(); // Modified
var eEnd = events[i].getEndTime();
var eDate = eEnd.toString(); // Modified
ss.getRange(i+2,1,1,8).setValues([ [events[i].getDateCreated(),
                                events[i].getTitle(),
                                events[i].getDescription(),
                                events[i].getLocation(),
                                sDate, // Modified
                                eDate, // Modified
                                events[i].getId(),
                                events[i].getCreators()] ]);

Ссылки:

Если я неправильно понял ваш вопрос, прошу прощения.

Edit:

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

function listEvents(){
  var ss, range, ui, rcalendarId, ask, askDate, askEnd,cal, start, end, events, num, dateString, eStart,sDate, sTime, string, eEnd, eDate, eTime, data;
  ss = SpreadsheetApp.openById('1p8VOhUD4agzq_seWWWiIYn658zBh1ZY4a2n_OFu5An4').getSheetByName('Sheet1');
  ss.clear();  
  range = ss.getRange(1,1,1,8).setValues([ ["Date Created","Title","Description","Location","Start Date","End Date", "Id", "Creator"] ]);

    //ASK FOR CALENDAR ID
  ui = SpreadsheetApp.getUi();
  ask = ui.prompt('Search for resource calendar list. Enter the resource calendar id');
  cal = CalendarApp.getCalendarById(ask.getResponseText());

    //ASK FOR START DATE CALENDAR SEARCH  -- enter June 22, 2019
  askDate = ui.prompt('Enter the Start Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');
  start = new Date(askDate.getResponseText());
    //ASL FOR END DATE CALENDAR SEARCH  -- enter June 23, 2019
  askEnd = ui.prompt('Enter the End Date. Date must be "Month Date, Year" format (i.e. May 1, 1970)');
  end = new Date (askEnd.getResponseText()); 

  events = cal.getEvents(start, end);
  num = events.length;

  for (var i = 0; i < num; i++) {

    // Column: Start Date
    eStart = events[i].getStartTime();
    sDate = eStart.toDateString();
    sTime = eStart.toTimeString(); // Modified sTime = sDate.toTimeString();
    // Column: End Date
    eEnd = events[i].getEndTime();
    eDate = eEnd.toDateString();
    eTime = eEnd.toTimeString(); // Modified eTime = eDate.toTimeString();

    // DISPLAY RESULT IN SPREADSHEET
    ss.getRange(i+2,1,1,8).setValues([ [events[i].getDateCreated(),
                                        events[i].getTitle(),
                                        events[i].getDescription(),
                                        events[i].getLocation(),
                                        sDate + " " + sTime,
                                        eDate + " " + eTime,
                                        events[i].getId(),
                                      events[i].getCreators()] ]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...