2016-12-06 3 views
0

すべての値と書式を別のスプレッドシートに毎週コピーして、毎回ブック内に新しいシートを作成しようとしています。これはアーカイブ目的です。私は以下をまとめました:名前を要求しているときに値と書式をコピー/貼り付け

function ArchiveByWeek(){ 
    var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CRS Stats By Week') 
    var buildVersion = Browser.inputBox("What is the Weekend Ending Date?"); 
    var sValues = source.getDataRange().getValues(); 
    var sBG = source.getDataRange().getBackgrounds(); 
    var sFC = source.getDataRange().getFontColors(); 
    var sFF = source.getDataRange().getFontFamilies(); 
    var sFL = source.getDataRange().getFontLines(); 
    var sFFa = source.getDataRange().getFontFamilies(); 
    var sFSz = source.getDataRange().getFontSizes(); 
    var sFSt = source.getDataRange().getFontStyles(); 
    var sFW = source.getDataRange().getFontWeights(); 
    var sHA = source.getDataRange().getHorizontalAlignments(); 
    var sVA = source.getDataRange().getVerticalAlignments(); 
    var sNF = source.getDataRange().getNumberFormats(); 
    var sWR = source.getDataRange().getWraps(); 
    var destination = SpreadsheetApp.openById('1WVfJGDbdOewO2H-aMhQiek7sCOolK6xH7cSbfZ8KQgY'); 
    var destinationSheet = destination.insertSheet(buildVersion, 1); 
    destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues) 
    .setBackgrounds(sBG) 
    .setFontColors(sFC) 
    .setFontFamilies(sFF) 
    .setFontLines(sFL) 
    .setFontFamilies(sFFa) 
    .setFontSizes(sFSz) 
    .setFontStyles(sFSt) 
    .setFontWeights(sFW) 
    .setHorizontalAlignments(sHA) 
    .setVerticalAlignments(sVA) 
    .setNumberFormats(sNF) 
    .setWraps(sWR); 
} 

これはうまくいくようですが、一部のセルだけがコピーされません。何らかの理由で、他の細胞を合計しているのは細胞だけです。理由を理解できません。

私は、私はそれぞれの新しいシートに一意の名前を与えるための方法を見つけることができませんでした、完璧に働いた次のスクリプトを、見つけ:

function copySheetValues(){ 
    var source = SpreadsheetApp.getActiveSheet(); 
    var sourcename = source.getSheetName(); 
    var sValues = source.getDataRange().getValues(); 
    var sBG = source.getDataRange().getBackgrounds(); 
    var sFC = source.getDataRange().getFontColors(); 
    var sFF = source.getDataRange().getFontFamilies(); 
    var sFL = source.getDataRange().getFontLines(); 
    var sFFa = source.getDataRange().getFontFamilies(); 
    var sFSz = source.getDataRange().getFontSizes(); 
    var sFSt = source.getDataRange().getFontStyles(); 
    var sFW = source.getDataRange().getFontWeights(); 
    var sHA = source.getDataRange().getHorizontalAlignments(); 
    var sVA = source.getDataRange().getVerticalAlignments(); 
    var sNF = source.getDataRange().getNumberFormats(); 
    var sWR = source.getDataRange().getWraps(); 

    var destination = SpreadsheetApp.openById('15ucPbZrIYXZAOCYVdpK6OA0oyQT1NcsmuiJmDRfdpHQ'); 
    var destinationSheet = destination.insertSheet(sourcename, 0); 
    destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues) 
    .setBackgrounds(sBG) 
    .setFontColors(sFC) 
    .setFontFamilies(sFF) 
    .setFontLines(sFL) 
    .setFontFamilies(sFFa) 
    .setFontSizes(sFSz) 
    .setFontStyles(sFSt) 
    .setFontWeights(sFW) 
    .setHorizontalAlignments(sHA) 
    .setVerticalAlignments(sVA) 
    .setNumberFormats(sNF) 
    .setWraps(sWR); 
} 
+0

あなたはユーザーに尋ねていないので、スクリプトのどの部分が正しく機能していないのですか? –

+1

別の注記では、これらのgetDataRange()呼び出しをすべて減らす必要があります。var range = source.getDataRange(); var sValues = range.getValues(); var sBG = range.getBackgrounds();等 – utphx

答えて

0

私は実際に私解決策を考え出すことができましたに満足していた。これにより、すべての値を貼り付けることができ、見た目にシート上にあるように書式を正確に設定できました。それは私の意図だった新しいシートの名前を尋ねます:

function Archive() { 
    var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SHEET NAME') 
    var sValues = source.getDataRange() 
     .getValues(); 
    var weekEnding = Browser.inputBox("What is the Weekend Ending Date?"); 
    var destination = SpreadsheetApp.openById('SHEET ID'); 
    var copy = source.copyTo(destination) 
     .setName(weekEnding) 
    copy.getRange(1, 1, sValues.length, sValues[0].length) 
     .setValues(sValues); // overwrite all formulas that the copyTo preserved 
関連する問題