У меня есть электронная таблица, в которой хранятся данные из формы. как только данные передаются в форме submit, у меня есть сценарий, выполняющий некоторые вычисления расстояний с использованием карт Google и электронной почты соответствующей информации соответствующим заинтересованным сторонам.google apps сценарий календарь авторизация необходимый цикл
сценарий также запускается на столбец в электронной таблице с определенными данными, которые затем снова направляют соответствующую информацию соответствующим заинтересованным сторонам и предполагается создать событие в календаре по умолчанию.
скрипт работает отлично, но с тех пор, как я вставил calendarapp.getdefaultcalendar, чтобы начать создавать события, я продолжаю получать требуемый экран авторизации, запрашивая у меня, что скрипт будет управлять моими календарями, просматривать и управлять моими электронными таблицами, отправлять электронную почту как меня и подключиться к внешним службам. все это нормально, и я принимаю приглашение, за исключением того, что он снова и снова возвращается.
любые предложения, пожалуйста, помогите. я достиг некоторого типа квоты, что это?
function myFunction() {
var DISTANCE_COLUMN = 14;
var DURATION_COLUMN = 15;
var COST_COLUMN = 16;
var ROUTE_COLUMN = 17;
var STATE_COLUMN = 18;
var BOOKED_COLUMN = 19;
var EMAILED_STATE = "EMAILED";
var BOOKED_STATE = "BOOKED";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; // gets sheet 0 from active spreadsheet
var data = getRowsData(sheet); // gets all the data from the active spreadsheet using
// the getRowsData function below
for (var i = 0; i < data.length; i++) { // for every row within the active spreadsheet
var row = data[i];
row.rowNumber = i + 2;
if(!row.distance) { // check to see if distance already exists
var mapsURL = 'http://maps.google.com/maps/api/directions/xml?origin=' + row.pickUpAddress + ' Victoria&destination=' + row.dropOffAddress + ' Victoria&sensor=false&units=metric&mode=driving';
var mapsXML = UrlFetchApp.fetch(mapsURL).getContentText();
var mapsResponse = Xml.parse(mapsXML, true);
var distance = mapsResponse.DirectionsResponse.route.leg.distance.getElement("value").getText();
var duration = mapsResponse.DirectionsResponse.route.leg.duration.getElement("value").getText();
var distance = Math.round(distance/1000); // convert distance in to kilometers
var duration = Math.round(duration/60); //convert duration in to minutes
var cost = 0;
// Changes the date fields in to strings so that we can compare for tarif one.
var formattedPickUpTime = Utilities.formatDate(row.pickUpTime, "GMT+1000", "HHmmss");
var formattedFromTime = Utilities.formatDate(new Date("12/30/1899 23:00:00"), "GMT+1100", "HHmmss");
var formattedToTime = Utilities.formatDate(new Date("12/31/1899 04:00:00"), "GMT+1100", "HHmmss");
var mapsRoute = '"http://maps.google.com/maps?f=d&source=s_d&saddr=' + row.pickUpAddress + ' Victoria&daddr=' + row.dropOffAddress + ' Victoria&mode=driving"';
sheet.getRange(row.rowNumber, DISTANCE_COLUMN).setValue(distance); // set distance value
sheet.getRange(row.rowNumber, DURATION_COLUMN).setValue(duration); // set duration value
sheet.getRange(row.rowNumber, COST_COLUMN).setValue(cost); // set cost value
sheet.getRange(row.rowNumber, ROUTE_COLUMN).setValue(mapsRoute); // set map of route value
}
if(!row.state) { // check to see if emails have already been sent
stakeholderEmailFYI(row, distance, duration, cost, mapsRoute); // send an FYI email to the stakeholder
// customerEmailConfirmation(row); // send a confirmation email to the customer
sheet.getRange(row.rowNumber, STATE_COLUMN).setValue(EMAILED_STATE); // change state value to SENT
}
if(row.sendBooking == "Y") { // check to see if emails have already been sent
// customerEmailConfirmation(row); // send a confirmation email to the customer
var eventStartTime = row.pickUpTime;
// End time is calculated by adding an hour in the event start time
var eventEndTime = new Date(row.pickUpTime.valueOf()+60*60*1000);
var cal = CalendarApp.getDefaultCalendar().createEvent(row.fullName, eventStartTime, eventEndTime, {location: row.pickUpAddress});
// cal.createEvent(row.fullName, eventStartTime, eventEndTime, {location: row.pickUpAddress});
sheet.getRange(row.rowNumber, BOOKED_COLUMN).setValue(BOOKED_STATE); // change state value to SENT
}
}
}
вариант 3 работал с удовольствием, большое спасибо за такой быстрый ответ, приветствия. – user3001607