gpt4 book ai didi

javascript - Google App Scripts onOpen() 触发器在工作表上不起作用

转载 作者:行者123 更新时间:2023-12-03 00:22:50 27 4
gpt4 key购买 nike

我无法在打开电子表格时运行我的脚本。我已手动设置触发器see 。授权范围也已设置。

该代码旨在从工作表中的表中获取一些联系人信息,创建一个联系人,然后将该联系人添加到表中指定的电子邮件列表中。有一个功能可以检查该电子邮件是否已存在并防止重复。如果我从脚本编辑器运行该代码,则该代码可以正常工作。我不确定为什么无法使用 onOpen(e) 触发器运行它。

我认为该问题与 this 有关但最低限度的代码对我有用,并在打开的触发器上创建第二张纸。

感谢任何帮助,因为我陷入困境 - 这一定是我的代码的问题。

代码:

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;
}

最佳答案

简单触发器不能用于需要授权的流程。

进一步阅读文档说明:

G Suite application triggers

G Suite 应用程序的可安装触发器在概念上类似于 onOpen() 等简单触发器,但它们可以响应其他事件,并且行为不同。

例如,每当具有编辑权限的用户打开电子表格时,Google 表格的可安装打开触发器就会激活,就像简单的 onOpen() 触发器一样。 但是,可安装版本可以调用需要授权的服务。可安装版本会在创建触发器的用户的授权下运行,即使具有编辑权限的其他用户打开电子表格也是如此。

关于javascript - Google App Scripts onOpen() 触发器在工作表上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54228251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com