10
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

【GAS】スプレッドシートから書式も含めて他のスプレッドシートへコピーする方法

書いた経緯

同じスプレッドシート内であれば、簡単にコピーできるけど違うスプレッドシートにコピーする場合はひと手間加える必要があったため

同じスプレッドシート内でのコピー方法

まずは同じスプレッドシート内でコピーするスクリプトです。

function copyToOtherSht() {
  var ss = SpreadsheetApp.openById('スプレッドシートID');

  var getRange = ss.getSheetByName('シート1').getRange('A1:C3');
  var setCell = ss.getSheetByName('シート2').getRange('B4');

  copyRange.copyTo(setCell);
}

注意点としては、CopyToメソッドはその前にシートオブジェクトを置くか、Rangeオブジェクトを置くかで()で指定するオブジェクトが変わってきます。

Sheetオブジェクト.copyTo(Spreadsheetオブジェクト);
Rangeオブジェクト.copyTo(Rangeオブジェクト);

コピー先を違うスプレッドシートにしてみる

function copyToOtherSht() {
  var getsht = SpreadsheetApp.openById('スプレッドシートID(コピー元)').getSheetByName('シート1');
  var getRange = getsht.getSheetByName('シート1').getRange('A1:C3');

  var setCell =  SpreadsheetApp.openById('スプレッドシートID(コピー先)').getSheetByName('シート1').getRange('B4');

  getRange.copyTo(setCell); //ここでエラーになる
}

すると下記のエラーが出ていまします。
2019-07-15_15h44_33.jpg
エラー内容どおり、copyToメソッドでは異なるスプレッドシートへコピーはできないようです。

エラーを回避して違うスプレッドシートへコピーする方法

上記のエラーを回避するために下記の手順を踏みます。

  1. コピーしたいシートをコピー先のスプレッドシートに移動
  2. コピーした先のスプレッドシートでコピーしたいRangeを指定
  3. コピー先を指定してコピー実行
  4. 移動させたシートの削除
function copyToOtherSht() {
  var getSht = SpreadsheetApp.openById('スプレッドシートID(コピー元)').getSheetByName('シート1');

  //1. コピーしたいシートをコピー先のスプレッドシートに移動
  var activeSs = SpreadsheetApp.getActiveSpreadsheet();
  var copySht = getSht.copyTo(activeSs);

  //2. コピーした先のスプレッドシートでコピーしたいRangeを指定
  var getRange = copySht.getRange('A1:C3');

  //3. コピー先を指定してコピー実行
  var setCell = activeSs.getSheetByName('シート1').getRange('D2');
  getRange.copyTo(setCell);

  //4. 移動させたシートの削除
  activeSs.deleteSheet(copySht);
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
10
Help us understand the problem. What are the problem?