2017-09-06 3 views
1

시트에서 Google 연락처를 업데이트하려고합니다. 시트의 열 I를 검색하여 '보류 중'인지 확인하고 싶습니다. 행이 보류중인 경우 해당 행의 G, H 및 E 열의 값을 가져와 해당 연락처의 메모에 추가하려고합니다.Google 응용 프로그램 스크립트를 사용하여 표시된 시트로 Google 연락처 업데이트

내가 지금까지 가지고있는 것이있다. 현재 '보류 중'으로 표시된 연락처의 행을 가져 오는 방법에 대해 계속 설명합니다.

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

이 테스트는 수행해야합니다. 코드가 작동하지 않으면 알려주십시오.

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

+0

사용을 고려해야합니다 'getSheetById'? 스크립트의 경우 ... 마지막 행을 제외하고는 반복하지 않습니다 ... 보류 중입니다 ... – testing123

+0

SpreadsheetApp.getActiveSheet();가 항상 올바른 워크 시트의 데이터를 읽는다고 보장하지 않기 때문입니다. –

+0

답을 업데이트했습니다. 지금 확인하십시오. 'for' 루프의 작은 변경 –