シート内の最終行までの行数、すなわち、最終行の行番番号を取得するには Sheet クラスの
getMaxRows メソッドを用いる。
【構文】
SheetObject.getMaxRows()
戻り値 : int 型。最終行までの行数を返す。
【例】
function GetMaxRows() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("最終行 : "+ objSheet.getMaxRows());
}
シートに 100 行あった場合は、
「最終行 : 100」
と、メッセージボックスに表示される。
2012年7月20日金曜日
シート内の最終列までの列数を取得する
シート内の最終列までの列数、すなわち、最終列の列番番号を取得するには Sheet クラスの
getMaxColumnsメソッドを用いる。
【構文】
SheetObject.getMaxColumns()
戻り値 : int 型。最終列までの列数を返す。
【例】
function getMaxColumns() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("最終列: "+ objSheet.getMaxColumns());
}
シートに 20 列あった場合は、
「最終列 : 20」
と、メッセージボックスに表示される。
getMaxColumnsメソッドを用いる。
【構文】
SheetObject.getMaxColumns()
戻り値 : int 型。最終列までの列数を返す。
【例】
function getMaxColumns() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("最終列: "+ objSheet.getMaxColumns());
}
シートに 20 列あった場合は、
「最終列 : 20」
と、メッセージボックスに表示される。
シートの内容をクリアする
シートをクリアするには、クリアの仕方に応じて Sheet クラスのメソッドが用意されている。
◆シートの値、計算式、書式、コメント全てをクリアする場合は、Sheet クラスの clear メソッド
を用いる。
【構文1】
SheetObject.clear()
戻り値 : Sheet 型。クリアする対象のシート(=SheetObject)。
【例1】
function ClearSheet() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
var objSheet2 = objSheet.clear();
Browser.msgBox(objSheet2.getName());
}
実行後に表示されるシート名は、アクティブになっているシート、すなわち、クリアの対象と
なったシート名が表示される。
◆シートのコンテンツ、すなわち、値と書式(多分)のみをクリアする場合は、Sheet クラスの
clearContents メソッドを用いる。
【構文2】
SheetObject.clearContents()
戻り値 : Sheet 型。クリアする対象のシート。
◆シートの書式のみをクリアする場合は、Sheet クラスの clearFormats メソッドを用いる。
【構文3】
SheetObject.clearFormats()
戻り値 : Sheet 型。クリアする対象のシート。
◆シートのコメントのみをクリアする場合は、Sheet クラスの clearComments メソッドを
用いる。
【構文4】
SheetObject.clearComments()
戻り値 : Sheet 型。クリアする対象のシート。
◆シートの値、計算式、書式、コメント全てをクリアする場合は、Sheet クラスの clear メソッド
を用いる。
【構文1】
SheetObject.clear()
戻り値 : Sheet 型。クリアする対象のシート(=SheetObject)。
【例1】
function ClearSheet() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
var objSheet2 = objSheet.clear();
Browser.msgBox(objSheet2.getName());
}
実行後に表示されるシート名は、アクティブになっているシート、すなわち、クリアの対象と
なったシート名が表示される。
◆シートのコンテンツ、すなわち、値と書式(多分)のみをクリアする場合は、Sheet クラスの
clearContents メソッドを用いる。
【構文2】
SheetObject.clearContents()
戻り値 : Sheet 型。クリアする対象のシート。
◆シートの書式のみをクリアする場合は、Sheet クラスの clearFormats メソッドを用いる。
【構文3】
SheetObject.clearFormats()
戻り値 : Sheet 型。クリアする対象のシート。
◆シートのコメントのみをクリアする場合は、Sheet クラスの clearComments メソッドを
用いる。
【構文4】
SheetObject.clearComments()
戻り値 : Sheet 型。クリアする対象のシート。
2012年7月11日水曜日
シートをコピーする
あるスプレッドシートのシートを別のスプレッドシートにコピーするには、Sheet クラスの copyTo
メソッドを使用する。
【構文】
SheetObject.copyTo(destination)
destination : Spreadsheet 型。コピー先の Spreadsheet オブジェクトを指定。
コピー先のシート名は指定できないようで、本日時点の仕様では、コピー先のシート名は
コピー ~ コピー元のシート名
になるようである。また、コピーする位置も指定できない。現時点では、一番先頭にコピー
されるようである。
以下、アクティブスプレッドシートにある「シート4」を、スプレッドシート「DestSpreadsheet」に
コピーする例を以下に記す。ちなみに、スプレッドシート「DestSpreadsheet」の Id は
abcdEFGHijklmnopQrstUvwXYz
であるものとする。
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objDestSpreadsheet = SpreadsheetApp.openById(" abcdEFGHijklmnopQrstUvwXYz ");
var objSheet = objSpreadsheet.getSheetByName("シート4");
objSheet.copyTo(objDestSpreadsheet);
}
実行結果のコピー先のスプレッドシートは下図の通りとなる :
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getSheetByName("シート4");
objSheet.copyTo(objSpreadsheet );
}
の名前でシートがコピーされる。
メソッドを使用する。
【構文】
SheetObject.copyTo(destination)
destination : Spreadsheet 型。コピー先の Spreadsheet オブジェクトを指定。
コピー先のシート名は指定できないようで、本日時点の仕様では、コピー先のシート名は
コピー ~ コピー元のシート名
になるようである。また、コピーする位置も指定できない。現時点では、一番先頭にコピー
されるようである。
以下、アクティブスプレッドシートにある「シート4」を、スプレッドシート「DestSpreadsheet」に
コピーする例を以下に記す。ちなみに、スプレッドシート「DestSpreadsheet」の Id は
abcdEFGHijklmnopQrstUvwXYz
であるものとする。
【例1】
function SheetCopySample1() {var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objDestSpreadsheet = SpreadsheetApp.openById(" abcdEFGHijklmnopQrstUvwXYz ");
var objSheet = objSpreadsheet.getSheetByName("シート4");
objSheet.copyTo(objDestSpreadsheet);
}
実行結果のコピー先のスプレッドシートは下図の通りとなる :
上記の例は、シートを異なるスプレッドシートへコピーする例であったが、同一スプレッド
シート内でのシートのコピーの場合は、copyTo メソッドの引数にコピー元のスプレッド
シートオブジェクトを指定すれば良い。
シート内でのシートのコピーの場合は、copyTo メソッドの引数にコピー元のスプレッド
シートオブジェクトを指定すれば良い。
以下は、そのサンプルコード。
【例2】
function SheetCopySample2() {var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getSheetByName("シート4");
objSheet.copyTo(objSpreadsheet );
}
実行の結果、アクティブスプレッドシートの先頭に
コピー ~ シート4
シートの名前を設定(変更)する
シートの名前を変更(設定)するには、Sheet クラスの setName メソッドを使用する。
【構文】
SheetObject.setName(name)
【構文】
SheetObject.setName(name)
name : string 型。変更(設定)したいシート名を指定する。
戻り値 : Sheet 型。対象の Sheet オブジェクトを返す(ようである)。
【例】
戻り値 : Sheet 型。対象の Sheet オブジェクトを返す(ようである)。
【例】
function SetSheetName() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
var objNewNameSheet = objSheet.setName("NewSheetName1");
Browser.msgBox(objNewNameSheet.getName());
}
アクティブでないシートを削除する
アクティブシートの削除は既に述べたとおりだが、アクティブでないシートを削除するにはどう
すれば良いのか色々とメソッドを調べてみたが、それらしきものは見当たらなかった。本当は
あるのかも知れないが。。。
もし本当に該当するメソッドがないのだとすれば、アクティブでないシートの削除は下記手順
で処理するしかない :
【手順 1】
『既存シート(オブジェクト)を取得する』の項の要領で、削除対象のシートオブジェクトを取得
する。
【手順 2】
『シートを選択(アクティブに)する』の項で述べた要領で、削除対象シートをアクティブにする。
【手順 3】
アクティブになった削除対象シートを、『アクティブシートを削除する』の項のやり方に従って
削除する。
すれば良いのか色々とメソッドを調べてみたが、それらしきものは見当たらなかった。本当は
あるのかも知れないが。。。
もし本当に該当するメソッドがないのだとすれば、アクティブでないシートの削除は下記手順
で処理するしかない :
『既存シート(オブジェクト)を取得する』の項の要領で、削除対象のシートオブジェクトを取得
する。
【手順 2】
『シートを選択(アクティブに)する』の項で述べた要領で、削除対象シートをアクティブにする。
【手順 3】
アクティブになった削除対象シートを、『アクティブシートを削除する』の項のやり方に従って
削除する。
シートを選択(アクティブに)する
スプレッドシートの特定のシートを選択する、すなわち、アクティブにするには、SpreadsheetApp
クラスの setActiveSheet メソッドを用いる。
【構文】
SpreadsheetApp.setActiveSheet(sheet)
sheet : Sheet 型。選択したいシートオブジェクトを指定する。
シート1~5をもつアクティブなスプレッドシートについて、シート1をアクティブな状態からシート3
を選択するコードを以下に記す。
【例1】
function SetActiveSheet1() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getSheetByName("シート3");
SpreadsheetApp.setActiveSheet(objSheet);
Browser.msgBox(objSheet.getName() + "へ移動しました。");
}
上記コードを実行すると、シート3がアクティブになった後、
「シート3へ移動しました。」
とメッセージが表示される。
因みに、アクティブでないスプレッドシートのシートを選択するようにコードを書き換えてみたが、
処理が正常に実行されなかった。アクティブなスプレッドシートのシートにのみ有効なメソッド
なのかも知れない(要確認)。
スプレッドシート内の特定のシートをアクティブにするもうひとつの方法として、Spreadsheet
クラスの setActiveSheet メソッドを用いるやり方がある。個人的には、こちらの方が正統な
気がする。
【構文】
SpreadsheetObject.setActiveSheet(sheet)
sheet : Sheet 型。選択したいシートオブジェクトを指定する。
上の例と同様、シート3をアクティブにする例をいかに記す。
【例2】
function SetActiveSheet2() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getSheetByName("シート3");
objSpreadsheet.setActiveSheet(objSheet);
Browser.msgBox(objSheet.getName() + "へ移動しました。");
}
こちらのやり方でも、アクティブスプレッドシートでないものに対しては、エラーになってしまう。
アクティブシートを削除する
Google Apps Script では、エクセルの場合のように指定したシートを削除することはできなさそう
だが、アクティブになっているシートを削除することはできる。アクティブシートを削除する場合は、Spreadsheet オブジェクトの deleteActiveSheet メソッドを使用する。
【構文】
SpreadsheetObject.deleteActiveSheet()
戻り値 : Sheet 型。削除した後にアクティブになる Sheet オブジェクトを返すようである。
「シートを追加する」の項と同様に、4つのシートをもつスプレッドシートから、アクティブになって
いる「シート1」を削除するサンプルコードを以下に記す。
【例】
function DeleteActiveSheet() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.deleteActiveSheet();
Browser.msgBox(objSheet.getName());
}
コードの最終行では、deleteActiveSheet メソッドを実行した結果返される Sheet オブジェクト
のシート名をメッセージボックスに表示するようにしている。実行後のサンプルシートは下記
の通り :
また、表示されるメッセージは下記の通り :
この二つの事象から、アクティブシートを削除した場合は、削除したシートの右隣にあるシート
がアクティブとなり、その(新たにアクティブになった)シートが deleteActiveSheet メソッドの戻り
値としてかえされるようである。但し、関連するサイトには、そのような記述がないので、あくまで
も推測の域をでない。deleteActiveSheet メソッドの戻り値は使用しない方が良いような気がする。
アクティブシートを取得する
アクティブシートを取得する為には Spreadsheet クラスの getActiveSheet メソッドを用いる。
【構文1】
SpreadsheetObject.getActiveSheet()
戻り値 : Sheet 型。アクティブになっている Sheet オブジェクトが返される。
【例1】
function GetActiveSheet1() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("シート名 : " + objSheet.getName());
}
}
アクティブシートを取得するもう一つの方法は、SpreadsheetApp クラスの getActiveSheet
メソッドを用いるやり方である。上のやり方が正統のような気もするが、こちらの方が、少ない
コードで実現できる。
【構文2】
SpreadsheetApp.getActiveSheet()
戻り値 : Sheet 型。アクティブになっている Sheet オブジェクトが返される。
【例2】
function GetActiveSheet2() {
var objSheet = SpreadsheetApp.getActiveSheet();
Browser.msgBox("シート名 : " + objSheet.getName());
}
}
全てのシート(オブジェクト)を取得する
スプレッドシート内の全てのシートオブジェクトを取得するには、Spreadsheet クラスの
getSheets メソッドを用いる。
getSheets メソッドを用いる。
【構文】
SpreadsheetObject.getSheets()
戻り値 : Sheet 型の配列。スプレッドシートの全シートオブジェクトが配列として返される。
以下にアクティブスプレッドシートの全シートオブジェクトを取得し、それらのシート名をログ
に表示サンプルコードを記す :
【例】
function GetAllSheet() {
var objSheets
シートのインデックスを取得する
スプレッドシート内のシートは、左端のシートから1、2、3、...とインデックスが付与される。この
シートのインデックスを取得するには、Sheet クラスの getIndex メソッドを用いる。
【構文】
SheetObject.getIndex()
戻り値 : int 型。シートのインデックス番号が返される。
以下の例はアクティブシートのインデックス番号を求めるコードである。
【例】
function GetSheetIndex() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("シートのインデックス : " + objSheet.getIndex());
}
左端から三番目のシートがアクティブになっている場合、上記コードを実行すると、
「シートのインデックス : 3」
と、メッセージボックスに表示される。
シートのインデックスを取得するには、Sheet クラスの getIndex メソッドを用いる。
【構文】
SheetObject.getIndex()
戻り値 : int 型。シートのインデックス番号が返される。
以下の例はアクティブシートのインデックス番号を求めるコードである。
【例】
function GetSheetIndex() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox("シートのインデックス : " + objSheet.getIndex());
}
左端から三番目のシートがアクティブになっている場合、上記コードを実行すると、
「シートのインデックス : 3」
と、メッセージボックスに表示される。
既存シート(オブジェクト)を取得する
スプレッドシート内の既存のスプレッドシートを取得するには、Spreadsheet クラスのgetSheetByName メソッドを用いる。
【構文】
SpreadsheetObject.getSheetByName (name)
name : String 型。シートの名前を指定する。
戻り値 : Sheet 型。
【例】
function GetSheet() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getSheetByName("シート3");
Browser.msgBox("シート名 : " + objSheet.getName());
}
Browser.msgBox("シート名 : " + objSheet.getName());
}
スプレッドシートの場合と同様、Sheet オブジェクトを 取得してもシートがアクティブになったり
することはない。但し、取得したいシートが含まれるスプレッドシートが開いてなくても、シート
の取得をすることは可能である。
の取得をすることは可能である。
シートの名前を取得する
シートの名前を取得するには、Sheet クラスの getName メソッドを使用する。
【構文】
SheetObject.getName()
戻り値 : string 型。シート名。
【例】
function GetSheetName() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var objSheet = objSpreadsheet.getActiveSheet();
Browser.msgBox(objSheet.getName());
}
新規シートを追加する
スプレッドシートにシートを追加する場合は、Spreadsheet クラスの insertSheet メソッドを用いる。
【構文】
SpreadsheetObject.insertSheet()
SpreadsheetObject.insertSheet(name)
SpreadsheetObject.insertSheet(name, index)
SpreadsheetObject.insertSheet(name, index, advancedargs)
name : 省略可。string 型。 シート名を指定。省略した場合は、自動的に名前が付与される。
index : 省略可。integer 型。シートを挿入したいインデックス番号を指定。最初のシートは 0。
advancedargs : 省略可。テンプレートを指定とあるが詳細は不明。
戻り値 : Sheet 型。追加したシートのオブジェクト値が返される。
下図の通り、4つのシートをもつアクティブスプレッドシートにシートを追加するサンプルコード
を以下に記す。コードを実行する前は、「シート1」がアクティブになっているものとする。
【例1】
function InsertSheet1() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
objSpreadsheet.insertSheet();
}
引数を何も指定しない場合は、シート名は自動的に付与され、且つ、実行前にアクティブに
なっていたシートの右隣に追加される(ようである)。
【例2】
function InsertSheet2() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet("SampleSheet1", 2);
objSpreadsheet.insertSheet();
}
この例の場合は、第二引数で「2」を指定しているため、実行前にアクティブになっていたシート
が何れかにかかわらず、左から3番目の位置に新規シートが指定した名前で追加される。
【例3】
function InsertSheet3() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet("SampleSheet2");
objSpreadsheet.insertSheet();
}
第二引数を指定しない場合は、第一引数で指定された名前のシートが、実行前にアクティブ
だったシートの右隣に追加される。
【構文】
SpreadsheetObject.insertSheet()
SpreadsheetObject.insertSheet(name)
SpreadsheetObject.insertSheet(name, index)
SpreadsheetObject.insertSheet(name, index, advancedargs)
name : 省略可。string 型。 シート名を指定。省略した場合は、自動的に名前が付与される。
index : 省略可。integer 型。シートを挿入したいインデックス番号を指定。最初のシートは 0。
advancedargs : 省略可。テンプレートを指定とあるが詳細は不明。
戻り値 : Sheet 型。追加したシートのオブジェクト値が返される。
下図の通り、4つのシートをもつアクティブスプレッドシートにシートを追加するサンプルコード
を以下に記す。コードを実行する前は、「シート1」がアクティブになっているものとする。
【例1】
function InsertSheet1() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
objSpreadsheet.insertSheet();
}
引数を何も指定しない場合は、シート名は自動的に付与され、且つ、実行前にアクティブに
なっていたシートの右隣に追加される(ようである)。
【例2】
function InsertSheet2() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet("SampleSheet1", 2);
objSpreadsheet.insertSheet();
}
この例の場合は、第二引数で「2」を指定しているため、実行前にアクティブになっていたシート
が何れかにかかわらず、左から3番目の位置に新規シートが指定した名前で追加される。
【例3】
function InsertSheet3() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet("SampleSheet2");
objSpreadsheet.insertSheet();
}
第二引数を指定しない場合は、第一引数で指定された名前のシートが、実行前にアクティブ
だったシートの右隣に追加される。
登録:
投稿 (Atom)






