2017-09-06 18 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'ループのちょっとした変更 –

関連する問題