2016-04-05 12 views
0

自分のエリアで発生しているアクティビティだけを含むマネージャー用のマスターシートを作成する必要があります(私はこれが必要なスクリプトを用意しています)。これらのシートは、マスタシートから読み込まれます(同じブックにはありません)。1つのシートから別のシートに行をコピー

新しい提出がある場合は、該当するシートに行をコピーする必要があります。以下のコードはすべて1つのシートにダンプしています。私は正しい条件がないと仮定していますが、このマネージャーのときに「このシートに行を移動する」とはどうやって言いますか?私は、シートIDを行単位で呼ぶだけで十分だと思ったが、そうは思わない。

すべてのマネージャーに対してif else文を実行する必要がありますか?私は約80人のマネージャーがいるので、それは退屈になるでしょう。

以下は私の現在のコードです。どんな助けや助言もありがとう!

function moveRows(){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getSheetByName("Form Responses 1"); 
    var data = sh.getDataRange().getValues(); 

    // Grab the Headers 
    var headers = sh.getRange(1,1,1,sh.getLastColumn()).getValues(); 
    var nameCol = headers[0].indexOf('Enter Your Name'); 
    var candCol = headers[0].indexOf('Choose Candidate'); 
    var typeCol = headers[0].indexOf('Merged Experience'); 
    var docCol = headers[0].indexOf('Document Link'); 
    var timeCol = headers[0].indexOf('Timestamp'); 
    var subjectCol = headers[0].indexOf('Choose the Content Area'); 
    var ratingsCol = headers[0].indexOf('Ratings Summary'); 
    var accessCol = headers[0].indexOf('Access'); 
    var activityCol = headers[0].indexOf('Copied to Activity Sheet'); 
    var masterCol = headers[0].indexOf('Master Activity Sheet'); 
    var target = []; 

    // Loop over the values line by line 
    for (var i = 0; i < data.length; i++) { 
    var row = data[i]; 
    var name = row[nameCol]; 
    var activity = row[activityCol]; 
    var master = row[masterCol]; 
    var candidate = row[candCol]; 
    var type = row[typeCol]; 
    var subject = row[subjectCol]; 
    var ratings = row[ratingsCol]; 
    var access = row[accessCol]; 
    var guide = row[docCol]; 
    var time = row[timeCol]; 

    if (activity == "") { // if condition is true copy the whole row to target 
    target.push([time,name,candidate,subject,type,guide,ratings]); 
    Logger.log(target); 


    var ss2 = SpreadsheetApp.openById(master); 
    var sh2 = ss2.getSheetByName("Sheet1"); 
     sh2.getDataRange().offset(sh2.getLastRow(), 0, target.length, target[0].length).setValues(target); 
    } 
} 
} 

注:は、私は別のタブから行を移動異なるスクリプトの束を持っているが、私は、私は複数のワークブックを渡ってそれを動かす何かを見つけることができませんでした。

答えて

0

あなたができることは、マネージャーごとにデータをコピーする場所の配列を持つことです。

var managerSheet = { 
"manager1":"SheetAzerty", 
"manager2":"SheetQwerty" 
}; 

だけやるシートを選択するには:

var manager = "manager1"; //This is the value you retrieve 

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(managerSheet[manager]); 

ステファン

対応するための
+0

感謝を!彼らは別のワークブックにあることが重要ですか?私には、コードがアクティブシートを取得し、「マネージャー1」タブを選択すると言うように見えます。私はそれを間違って読んでいますか? – Niya

関連する問題