从 Google 表单创建动态 Google 组更新

Creating a dynamic Google group update from a Google form

正在为此寻找最后一段代码。我目前使用下面的代码从表单回复中提取联系信息 sheet 并自动添加到现有组。

我将在每次完成表单时向 运行 添加一个触发器,但是我需要更改代码以仅添加最后一行的信息。否则它会在每次完成表单时重新添加所有联系人,而不仅仅是最近的条目。

function addContact() {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (i =0; i<data.length; i++) { 
var column = data[i];
var firstName = column[1]; 
var lastName = column[2];      
var emailAdd = column[3];
var contact = ContactsApp.createContact(firstName, lastName, emailAdd);
var group = ContactsApp.getContactGroup('Group Name');
debugger;
group.addContact(contact);
}
}

感谢任何帮助。

使用这段代码,我猜:

function addContact() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var dataRange = sheet.getDataRange();
   var data = dataRange.getValues();
   var LastDataRow = data[data.length - 1];
   var firstName = LastDataRow[1]; 
   var lastName = LastDataRow[2];      
   var emailAdd = LastDataRow[3];

   // and so on...
}

这部分代码:var LastDataRow = data[data.length - 1]; 给你最后一行数据。

您根本不需要从电子表格中读取数据。

相反,您的表单提交事件处理程序可以接收包含该特定提交的所有数据的对象。

详情在这里:https://developers.google.com/apps-script/guides/triggers/events

最终看起来像这样:

function addContact(e) 
{
  var contact = ContactsApp.createContact(
    e.namedValues["First Name"].toString(),
    e.namedValues["Last Name"].toString(),
    e.namedValues["email Address"].toString());
  var group = ContactsApp.getContactGroup('Group Name');
  debugger;
  group.addContact(contact);
}