2017-01-10 31 views
1

私はRange.copyValuesToRange(sheet, column, columnEnd, row, rowEnd)Range.setValues(values)ではなくて別のスプレッドシートから値の範囲をコピーすることができる午前:copyValuesToRange()でスプレッドシート間の範囲をコピーできないのはなぜですか?

function test() 
{ 
    var sourceSheet = SpreadsheetApp.getActiveSheet(); 
    var sourceCols = sourceSheet.getRange("A1:B10"); 

    // Copying the first two columns this way works. 
    var sheet1 = SpreadsheetApp.create("New Spreadsheet 1").getActiveSheet(); 
    sheet1.getRange("A1:B10").setValues(sourceCols.getValues()); 

    // Copying the first two columns this way does not work. 
    var sheet2 = SpreadsheetApp.create("New Spreadsheet 2").getActiveSheet(); 
    sourceCols.copyValuesToRange(sheet2, 1, 2, 1, 10); 
} 

具体的には、コードを実行した後、New Spreadsheet 1は、範囲A1は含まれていますソーススプレッドシートのB10、New Spreadsheet 2ながら、空です。両方とも "Sheet1"という名前の単一のシートを持っています。ソーススプレッドシートは変更されていません。

私は間違っていますか?失敗したメソッドが単一のスプレッドシート内でしか機能しないのかどうかは疑問ですが、そのことに関するドキュメントには何も表示されません。

私がRange.copyValuesToRange()を使用したい理由は、Range.copyFormatToRange()でフォーマットをコピーすることもできます。

+0

これはあなたに役立つでしょうか? [http://stackoverflow.com/questions/16044580/copy-a-complete-list-on-one-spreadsheet-to-append-on-the-bottom-of-another-sprea](http://stackoverflow。 com/questions/16044580/copy-a-complete-list-on-one-spreadsheet-to-the-another-sprea) – Tanaike

+0

ありがとう@Tanaike、しかし私はすでにその技術を知っています。 –

+0

すみません、ごめんなさい。 – Tanaike

答えて

1

copyValuesToRangecopyFormatToRangeRange.copyToは、ドキュメントが明示的ではありませんが、同じスプレッドシート内でのコピーに限定されています。 を書式設定のスプレッドシート間でコピーできる回避策は、Sheet.copyToメソッドを使用して、シート全体をコピー先のスプレッドシートにコピーすることです。そこから必要な範囲をコピーし、必要に応じてシートを削除します。このように:

function cc() { 
    var ss1 = SpreadsheetApp.openByUrl('some url'); 
    var ss2 = SpreadsheetApp.openByUrl('another url'); 
    var sheet1 = ss1.getSheetByName('name'); 
    var sheet2 = ss2.getSheetByName('another name'); 
    // the above was the setup, main code begins here 
    var copySheet = sheet1.copyTo(ss2); 
    copySheet.getRange("A1:B2").copyTo(sh2.getRange("C1:D2")); 
    ss2.deleteSheet(copySheet); 
} 
+0

これは素晴らしいハックです。元のスプレッドシートには機密情報(生徒の等級)が含まれているため、追加ステップを経なければなりませんが、オリジナルの一時シートにスライスをコピーしてから、新しいスプレッドシートにコピーします。 –

関連する問題