循环播放工作表以获取未标记的值以更新Google联系人

时间:2017-09-06 16:14:41

标签: loops google-apps-script range

我有一个工作脚本,可以抓取Google表格的最后一行并将信息推送到Google联系人。

var ss = SpreadsheetApp.getActiveSheet();  //var emailRow = ss.getRange('F2:F').getValues(); 
var emailRowNum = ss.getLastRow();   //var emailRowNum = emailRow.filter(String).length + 1;

function email() {
  var emailNew = ss.getRange(emailRowNum,6).getValue();   //var emailNew = ss.getRange("F"+emailRowNum).getValues();
  return emailNew;}

function givenName() {
  var fname = ss.getRange(emailRowNum,4).getValue();
  return fname;}

function lastName() {
  var lname = ss.getRange(emailRowNum,5).getValue();
  return lname;}

function loc() {
  var street = ss.getRange(emailRowNum,8).getValue();
  var city =  ss.getRange(emailRowNum,9).getValue();
  return street + " " + city;}

function phone() {
  var phone = ss.getRange(emailRowNum,7).getValue();
  return phone;}

function notes() {
  var date = ss.getRange(emailRowNum,1).getValue();
  var work = ss.getRange(emailRowNum,2).getValue();
  var photo = ss.getRange(emailRowNum,3).getValue();
  var site = ss.getRange(emailRowNum,12).getValue();
  var find = ss.getRange(emailRowNum,10).getValue();
  var referrer = ss.getRange(emailRowNum,11).getValue();
  return (date + "\n\n" + work + "\n\n" + photo + "\n\n" + site + "\n\n" + find + " " + referrer + "\n\n-- eom --\n\n");}


function create() {
  var fname = givenName();
  var lname = lastName();
  var contact = ContactsApp.createContact(fname, lname, email());

  var group = ContactsApp.getContactGroup('emf');
  group.addContact(contact);

  var contacts = ContactsApp.getContactsByName(fname + ' ' + lname);
  var setaddress = contacts[0].addAddress(ContactsApp.Field.HOME_ADDRESS,loc());
  var setphone = contacts[0].addPhone(ContactsApp.Field.MAIN_PHONE,phone());
  for (var i in contacts) {
    contacts[i].setNotes(notes());
  }
}

我想修改它,以便它不是抓住最后一行,而是检查列的(非)值。如果未找到值,则使用该行的信息更新Google联系人。

目前,我找不到'范围未找到'错误...

function info(){ 
  var ss = SpreadsheetApp.getActiveSheet();
  var data = ss.getRange("N1:N").getValues(); 
  for(var n=0;n<data.length;n++){
    if(data[n-1] != 'done'){
      var email = ss.getRange("F"+n).getValue(); // Range not found error
      var fname = ss.getRange("D"+n).getValue();
      var lname = ss.getRange("E"+n).getValue();
      var city = ss.getRange("I"+n).getValue();
      var street = ss.getRange("H"+n).getValue();
      var phone = ss.getRange("G"+n).getValue();
      var date = ss.getRange("A"+n).getValue();
      var work = ss.getRange("B"+n).getValue();
      var photo = ss.getRange("C"+n).getValue();
      var site = ss.getRange("L"+n).getValue();
      var find = ss.getRange("J"+n).getValue();
      var referrer = ss.getRange("K"+n).getValue();

      var contact = ContactsApp.createContact(fname, lname, email);
      var group = ContactsApp.getContactGroup('emf');
      group.addContact(contact);

      var contacts = ContactsApp.getContactsByName(fname + ' ' + lname);
      var setaddress = contacts[0].addAddress(ContactsApp.Field.HOME_ADDRESS,street + " " + city);
      var setphone = contacts[0].addPhone(ContactsApp.Field.MAIN_PHONE,phone);
      for (var i in contacts) {
        contacts[i].setNotes(date + "\n\n" + work + "\n\n" + photo + "\n\n" + site + "\n\n" + find + " " + referrer + "\n\n-- eom --\n\n");}
    }
  }
}

1 个答案:

答案 0 :(得分:0)

1是使用带有getRange()的A1Notation的第一行。第一次迭代尝试getValue()的{​​{1}}。将F0更改为n1,应该会获得您要查找的范围。

n <= data.length

编辑:需要注意的是... for(var n=1;n<=data.length;n++){ if(data[n-1] == 'done'){ var email = ss.getRange("F"+n).getValue(); // Range not found error ... 范围将遍历所有1000个默认行。如果您的数据集明显小于1000行,这可能并不理想。