使用谷歌应用脚​​本更新谷歌联系人与标记的表格

时间:2017-09-06 05:07:13

标签: google-apps-script row

我正在尝试从表格更新我的Google通讯录。我想搜索工作表的第I列以检查“待定”。如果一行处于待处理状态,我想获取该行的G,H和E列中的值,并将其添加到该联系人的注释中。

这是我到目前为止所得到的。目前仍然坚持如何让联系人的行标记为“待定”。

function test(){ 
  var ss = SpreadsheetApp.getActiveSheet();
  var data = ss.getDataRange().getValues(); // read all data in the sheet
  for(n=9;n<data.length;++n){ // iterate row by row and examine data in column I
    if(data[n][0].toString().match('pending')){
       var row = ???
       var name = ss.getRange(row, 1).getValue();
       var contacts = ContactsApp.getContactsByName(name);
       for (var i in contacts) {
         var donate = ss.getRange(row, 7).getValue();
         var pickup = ss.getRange(row, 8).getValue();
         var item = ss.getRange(row, 5).getValue();
        contacts[i].setNotes(donate + '\n\n' + item + '\n\n' + pickup + '\n\n');}
     ss.getRange('9**row**').setValue('done');
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这应该做,但是没有经过测试。如果代码不起作用,请告诉我。

    function test()
    { 
       var ss = SpreadsheetApp.openById(<SPREADSHEET_ID>).getSheetByName("Sheet1");
       var lastRow = ss.getLastRow();
       var data = ss.getRange("I1:I"+lastRow).getValues(); // read all data in the sheet
       for(var n=0;n<data.length;n++)
       { // iterate row by row and examine data in column I
            if(data[n] == 'pending')
            {
               //var row = ???
               var name = ss.getRange("A"+n).getValue();
               var contacts = ContactsApp.getContactsByName(name);
               for (var i in contacts)
               {
                 var donate = ss.getRange("G"+n).getValue();
                 var pickup = ss.getRange("H"+n).getValue();
                 var item = ss.getRange("E"+n).getValue();
                contacts[i].setNotes(donate + '\n\n' + item + '\n\n' + pickup + '\n\n');}
             ss.getRange('9**row**').setValue('done');
            }
          }
        }

您应该考虑使用var ss = SpreadsheetApp.getActiveSheet();

,而不是使用var ss = SpreadsheetApp.openSheetById(<SPREADSHEET_ID>).getSheetByName(<SHEET_NAME>);