2017-03-27 12 views
0

これを行う正しい方法を検索しようとしているフォーラムを見てきましたが、正しくできないようです。これは初めてGoogle Apps Scriptを使用しているので、私が行っているように学んでいます。3枚目のセル値を使用してGoogleシートを新しいシートにコピー

これは私がやろうとしていることです。

1)古いシートのすべての内容を新しいシートに複製したい。スクリプトは、 'Statistics'シートのb17セルを参照して既存のシート名を決定し、値フォーマット、参照、および公式を含む古いシートを複製します。複製されたシートは、 'Statistics'シートのc17セルから名前が付けられます。

2)可能であれば、古いシートにすべての参照を削除し、新しいシートが作成された後に値とフォーマットを保持したいと考えています。コピーallとctrl-shift-vと同様に、1つで自動化することを除けば、急増しました。

これは、それが正しい

function newSheetLast() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var first = ss.getSheetByName("Statistics").activate(); 
    var oldSheetName = ss.getRange('b17').getDisplayValue(); 
    var newSheetName = ss.getRange('c17').getDisplayValue(); 
    var sheet = ss.getSheetByName(oldSheetName).activate(); 
    var source = SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(newSheetName); 
}; 

であれば1をやろうとしたとき、私は私がのcopyToを試してみましたが、シートをコピーするために得ることができますが、緩いすべて立ち往生していてください、私が現在持っているコードではありません新しい用紙にコピーするときの書式と数式。

私もあなたが変数の命名と複製シート作品は少し混乱した方法2

答えて

0

を試みるかどうかはわかりませんよ。 実際にシートオブジェクトを直接複製するか、少なくとも複製しようとしているシートの名前を提供することはできますが、それはスプレッドシートレベルにあり、アクティブシート上でのみ動作します。

シートを複製するには、式と書式設定が必要です。 静的な値で上書きするには、setValues(getValues)を使用します。

function newSheetLast() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var settings = ss.getSheetByName("Sheet1"); 
    var oldSheetName = settings.getRange('B17').getDisplayValue(); 
    var oldSheet = ss.getSheetByName(oldSheetName); 
    var newSheetName = settings.getRange('C17').getDisplayValue(); 
    ss 
     .getSheetByName(oldSheetName) 
     .activate() 
     .getParent() 
     .duplicateActiveSheet() 
     .setName(newSheetName); 

    oldSheet.getDataRange().setValues(oldSheet.getDataRange().getValues()); 
}; 
関連する問題