2017-12-14 22 views
0

と一致した場合にシート2からのデータでシート1を更新:Google Appsのスクリプトを使用してGoogleシート - 両シート上の値が、私は1枚のスプレッドシート上の2枚持って

https://docs.google.com/spreadsheets/d/1ahtB9M6rl6aHmj51ZlP_qDqyUwhpsSVg1r16BafcKIo/edit?usp=sharing

を、私は値を更新したいです各シートのID列の値が一致している場合は、「新規データ」シートの列Eの値とともに、「レポート」シートの列Cを選択します。

プロダクションでは、複数のユニークなマッチがあることを期待しています。どのように私はこれを行うのが最善でしょうか?

単純な例として、以下のモックシートでは、行IDが12のレポートシートの「STATE」列の値を「Queued」から「Won」に更新したいとします。

  • レポートシート

    ID |状態

    12 |待ち行列

    34 |紛失

  • 新しいデータシート

    ID |状態

    56 |紛失

    12 | Won

+0

クールなプロジェクトです。あなたが何かについて質問があれば教えてください。 –

+0

こんにちはアントワーヌ、ありがとう!私は明示的に質問していないことを知った(ちょうど編集した)。私はこれを行うには最高の方法を見つけることを望んでいる?私はいくつかの方法を試したが役に立たなかった。 –

+0

こんにちは私はあなたがdownvotesを取得しているのを見て、ここで[より良い質問をするガイド](http://catb.org/~esr/faqs/smart-questions.html)です。スタックオーバーフローやその他の場所に適用されます。 –

答えて

0

今週は尋ねられたsimilar questionがありました。

ここでは私の提案ですが、シートやタイトルの名前を変更する必要があります。

function setCommon() { 

    var ss = SpreadsheetApp.getActive(), 
     compare1 = "", compare2 = "", 

     outputSheet = ss.getSheetByName("Sheet1"), 
     sourceSheet = ss.getSheetByName("Sheet2"), 

     range1 = outputSheet.getDataRange(), 
     range2 = sourceSheet.getDataRange(), 

     lastCol1 = range1.getNumColumns(), 
     lastCol2 = range2.getNumColumns(), 

     values1 = range1.getValues(), 
     values2 = range2.getValues(), 

     // get the range of the titles 
     titleSection1 = outputSheet.getRange(1,1,1, lastCol1), 
     titleSection2 = sourceSheet.getRange(1,1,1, lastCol2), 

     // get the values from the titles 
     titles1 = titleSection1.getValues(), 
     titles2 = titleSection2.getValues(), 

     // get the column # for "ID" and "comment" 
     idCol1 = titles1[0].indexOf("ID"), 
     idCol2 = titles2[0].indexOf("ID"), 
     commentsCol1 = titles1[0].indexOf("comment"), 
     commentsCol2 = titles2[0].indexOf("comment"); 

    // get the IDs from range1 
    for (i = 1; i < values1.length; i++) { 
    compare1 = values1[i][idCol1]; 

    // get the IDs from range2 
    for (j = 1; j< values2.length; j++){ 
     compare2 = values2[j][idCol2]; 

     // if same ID, change the values array 
     if (compare1 == compare2) { 
     values1[i][commentsCol1] = values2[j][commentsCol2]; 
     } 
    } 
    } 
    // set values based on the values array 
    range1.setValues(values1); 
} 
+0

このAntoineをありがとう!あなたの助けが大変ありがとうございます。私はそれに行くよ! –

+0

ちょうどそれを試して、それは動作します!どうもありがとうございました! –