2016-05-18 4 views
1

1つのメイントラッカースプレッドシートから複数のシートを取り込むスクリプトの作成に問題があります。具体的には、メイントラッカーのスプレッドシートには、結果としてクライアントの結果が記録された列があります。私は単純にメイントラッカーに結果を入力し、その値を入力すると、その結果に関する情報だけを含む別のシートに新しい行を作成するようにしたいと考えています。Googleスプレッドシートの1つのマスタートラッカーから複数のシートを自動入力する方法

たとえば、マスターシートでは、結果列に「Added to waitlist」と入力すると、「Waiting Listに追加されたクライアント」という同じファイルを持つ別のシートにそのレコードのコピーが生成されます。私は約5つの異なる結果を得ることができるようにしたい。

現在、私は、このタスクを完了するために私の5つの成果と5つのタブごとに次のスクリプトを使用しているが、私は成功するためには至っていない。

function onEdit(event) { 
    // assumes source data in sheet named Needed 
    // target sheet of move to named Acquired 
    // test column with yes/no is col 4 or D 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "Main Tracker" && r.getColumn() == 8 && r.getValue() == "Added to Waitlist") { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Clients Added to Waitlist"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).copyTo(target); 
    } 
} 

私は上記の複数あるときはいつでも、スクリプトのエントリは、エディタに入力された最初のスクリプトのみが動作し、残りは単純には実行されません。もし私がこの問題を和解するのに役立つものがあれば、それはすばらしいでしょう。

答えて

0

スクリプト内に複数のonEdit関数を使用することはできません。関数名は一意でなければなりません。ただし、関数内に複数の条件文を含めることができます。

if (event.value == "Added to Waitlist") { 
    // do something 
} 
if (event.value == "Another thing") { 
    // do something else 
} 

いっそ、a switch statement使用:

switch (event.value) { 
    case "Added to Waitlist": 
    // do something 
    break 
    case "Another thing": 
    // do something else 
    break 

event.valueはあなたの編集で入力した値を与えることに注意してください。アクティブセルにgetValueを呼び出す必要はありません。

同様に、r = event.source.getActiveRange();は単にr = event.range;

+0

可能性があり、あなたが示唆したように私は、switchステートメントを使用し、それが動作します!ありがとうございました! – shavonb900

関連する問題