2017-08-31 3 views
0

Column C(注:サンプルシートに含まれていない数式)の数式を使用して、いくつかのデータポイントが自動的に計算される「ダッシュボード」[Sample Sheet Here]を開発中です。毎月、スプレッドシートのデータを次の列に追加

私は、セルの値は、私が以前に縦に変更をログに記録する次のスクリプトを使用している対応する

次の空白の列にコピーされているColumn Cデータの月次ログを作成したい、と考え希望の結果を得るために再利用して手を使うことができます。

function onEdit(event) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    var s = event.source.getActiveSheet(); 

    var r = event.source.getActiveRange(); 

    if(s.getName() == "Action Items" && r.getColumn() == 2 && r.getValue()) { 

    var row = r.getRow(); 

    var numColumns = s.getLastColumn(); 

    var targetSheet = ss.getSheetByName("Portion Tracking"); 

    if(targetSheet.getLastRow() == targetSheet.getMaxRows()) { 
     targetSheet.insertRowAfter(targetSheet.getLastRow()); 
    } 

    //Changes Start Here 
    var myRow = targetSheet.getLastRow()+1; 

    s.getRange(row, 1).copyTo(targetSheet.getRange(myRow,1)); 
    s.getRange(row, 2).copyTo(targetSheet.getRange(myRow,2)); 
    s.getRange(row, 3).copyTo(targetSheet.getRange(myRow,3)); 
    } 
} 

答えて

0

AppendColumn()

私はかつて、このアイデアをいじって、私はhereと私自身の彫刻の一部から取った機能を使用して。私はappendColumn()関数を用意しました。

とにかく、あなたが望むかもしれないもののように聞こえました。あなたはそれを見て、その間にあなたのコードを見てみましょう。

function appendColumn(columnA) 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var rg=sh.getDataRange(); 
    var vA=rg.getValues(); 
    var vB=transpose(vA); 
    sh.clear(); 
    sh.getRange(1,1,vB.length,vB[0].length).setValues(vB); 
    sh.appendRow(columnA); 
    vD=sh.getDataRange().getValues(); 
    sh.clear(); 
    vE=transpose(vD); 
    sh.getRange(1,1,vE.length,vE[0].length).setValues(vE);; 
} 

function transpose(a) 
{ 
    return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); 
} 

私はこれをこのように呼びました。

function testAppendColumn() 
{ 
    appendColumn(['',1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]); 
} 

ソースデータを確認したいと思います。しかし、それが変わっていないと仮定すれば、私はこの手法があなたのために働くだろうと推測しています。

私はこれをonEditトリガーに接続するロジックを理解できませんが、私はあなたがそうすると仮定します。

関連する問題