0

最近作成したスプレッドシートを変更できるスクリプトに取り組んでいます。
これが私がやりたいことです:

  1. 新しいスプレッドシートを作成
  2. 現在のスプレッドシートから新しいスプレッドシートにシートをコピーする
  3. 新しいスプレッドシートの新しいシートの名前を置き換えます。

作成したコードは次のとおりですが、実行するとスプレッドシートを作成できますが、元のスプレッドシートのシートは新しいスプレッドシートにコピーされません。基本的にはスプレッドシートを作成できますが、一度作成するとできません新しいものに書き込みます。何か案は??"

function dashboards(){
   //creates dashboards
   var ss1 = SpreadsheetApp.getActiveSpreadsheet();
   ss1.setActiveSheet(ss1.getSheetByName("Sheet1"));
   var ssNew = SpreadsheetApp.create("New spreadsheet").getId();
   var ss2 = SpreadsheetApp.openById(ssNew).setActiveSpreadsheet;
   ss1.copyTo(ssNew)
   ssNew.renameActiveSheet("newsheet");;
}
4

1 に答える 1

1

あなたはかなり近かったようですが、すべての変数参照をたどることはできません。これが私のために働いた書き直されたバージョンです。

setActiveSpreadsheet主な問題は、変数の割り当てを壊した可能性のある 6 行目の呼び出しのハングである可能性があると思います。

copyToもう 1 つの重要なポイントは、呼び出しから新しいスプレッドシートのシートへの参照を取得できることです。

function dashboards(){
   var ss1 = SpreadsheetApp.getActiveSpreadsheet();
   var origSheet = ss1.getSheetByName('Sheet1');
   var ssNew = SpreadsheetApp.create('New spreadsheet').getId();
   var ss2 = SpreadsheetApp.openById(ssNew);
   var newSheet = origSheet.copyTo(ss2);
   newSheet.setName('newsheet');
}
于 2012-11-06T00:18:48.573 に答える