Я не могу запустить скрипт при открытии электронной таблицы. Я установил триггер вручную см. . Область авторизации также была установлена.
Код предназначен для извлечения некоторой контактной информации из таблицы на листе, создания контакта, а затем добавления этого контакта в список адресов электронной почты, указанный в таблице. Существует функция, позволяющая проверить, существует ли это письмо, и предотвратить его дублирование. Код работает нормально, если я запускаю его из редактора скриптов. Я не уверен, почему я не могу запустить его с триггером onOpen(e)
.
Я думал, что проблема связана с этим , но минимальный минимальный код работает для меня и создает второй лист на триггере открытия.
Любая помощь оценена, потому что я застрял - это должно быть что-то с моим кодом.
Код:
function onOpen(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
// Iterate through all the data minus the header
for (var i=1; i<data.length; i++){
currApplicant = data[i]
applicantFirstName = currApplicant[1]
applicantLastName = currApplicant[2]
applicantEmail = currApplicant[3]
emailGroup = currApplicant[13]
addToEmailBool = currApplicant[12] //do you want to add them to the email list?
var numDuplicates = 0;
Logger.log(applicantEmail);
if ((addToEmailBool == 1) && (emailGroup != "")) {
var duplicateCounter = 0;
var numDuplicates = checkForDuplicates(emailGroup, applicantEmail);
if (numDuplicates==0){
var contact = ContactsApp.createContact(applicantFirstName, applicantLastName, applicantEmail);
var members = ContactsApp.getContactGroup(emailGroup);
members.addContact(contact);
Logger.log("Adding:", applicantEmail)
Browser.msgBox("Added new contact");
}
}
}
}
function checkForDuplicates(emailGroup, applicantEmail) {
var duplicateCounter = 0;
var groupContacts = ContactsApp.getContactGroup(emailGroup).getContacts()
//go thru all the contacts in this group and check if their emails == applicantEmail
for (var i in groupContacts) {
var emails = groupContacts[i].getEmails();
for (var e in emails) {
if (emails[e].getAddress() == applicantEmail){
duplicateCounter += 1;
Logger.log("Duplicate found:", applicantEmail);
}
}
}
return duplicateCounter;
}