ラベル Range操作 の投稿を表示しています。 すべての投稿を表示
ラベル Range操作 の投稿を表示しています。 すべての投稿を表示

2012年7月24日火曜日

指定した範囲(Range)のデータを全て取得する

指定したセル範囲のデータを全て取得するには Sheet クラスの getValues メソッドを用いる。
  
  
【構文】
RangeObject.getValues()
  
戻り値 : 配列型。行、列の二次元配列を返す。インデックスは行、列ともゼロから始まる。
  
  
まず、下図のように、値の入力されている全ての範囲を取得するサンプルコードを以下に記す :
  
  
  
【例1】
function GetValues1() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getDataRange();
  var varValues = objRange.getValues();
  Browser.msgBox(varValues[2][3]);
}
  
  
例1 の場合はセル A1 の値が配列のインデックス (0, 0) に格納されているので、インデックス
(2, 3) は 3 行 4 列、すなわち、セル D3 の値ということになるので、メッセージボックスに表示
される値は「d3」。
  
  
次に、下図のように B3:D6 の範囲を対象としたサンプルを以下の示す :
  
  
  
【例2】
function GetValues2() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("B3:D6");
  var varValues = objRange.getValues();
  Browser.msgBox(varValues[2][1])
}
  
  
この例の場合は、セル B3 の値が配列のインデックス (0, 0) に格納されるので、インデックス
(2, 1) はセル B3 を起点にして 3 行 2 列、すなわち、セル C5 になるので、表示される値は
「c5」となる。

セル(Range)に値を設定する

シート内の特定のセル(Range)内の値を取得する為には、Range クラスの getValue メソッド
を用いる。
  
  
【構文】
RangeObject.setValue(value)
  
value : int/String/Date/bool 型。セル(Range)に設定する値を指定。

戻り値 : Range 型。値を設定する対象のRange オブジェクトが返される。
  

  
【例】
function SetRangeValue() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("B12");
  objRange.setValue("abcde");
}

  
  
指定した Range が範囲だった場合が、setValue メソッドの引数で指定した値が範囲の全て
セルに設定される。getValue の場合同様、閉じたスプレッドシートやアクティブでないシート
対しても値を設定することは可能である。

セル(Range)の値を取得する

シート内の特定のセル(Range)の値を取得する為には、Range クラスの getValue メソッド
を用いる。
  
  
【構文】
RangeObject.getValue()
  
戻り値 : int/String/Date/bool の何れの型。Range が範囲の場合は、左端のセルの値を返す。
  
  
【例】
function GetRangeValue() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("B12");
  Browser.msgBox(objRange.getValue());
}
  
  
上記のコードを実行すると、メッセージボックスにセル B12 の値が表示される。また、この例
では選択されているスプレッドシートのアクティブシート内のセルの値を取得するが、開いて
いないスプレッドシートやアクティブでないシートのセル(Range)の値を取得することも、上と
同様にできる (対象のセルや Range を含むスプレッドシート、或いは、シートを指定すれば
よい)。

選択されている範囲(Range)を取得する

選択されている(アクティブな)範囲(Range)を取得するには、Sheet クラスの getActiveRange
メソッドを用いる。
  
  
【構文】
SheetObject.getActiveRange()
  
戻り値 : Range 型。選択されている範囲の Range オブジェクトが返される。
  
  
アクティブになっている範囲の列、及び、行番号をログに表示するサンプルコードを以下に
記す :
  
  
【例】 
function GetActiveRange() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getActiveRange();
  Logger.log("最終列 : " + objRange.getLastColumn());
  Logger.log("最終行 : " + objRange.getLastRow());
}

  
  
B 列 26 行目から F 列 39 行目迄が選択されている場合は 
  
最終列 : 6
最終行 : 39
  
と、ログ上に表示される。

選択されているセルを取得する

選択されている(アクティブな)セルを取得するには、Sheet クラスの getActiveCell
メソッドを用いる。
  
  
【構文】
SheetObject.getActiveCell()
  
戻り値 : Range 型。選択されているセルの Range オブジェクトが返される。
  
  
アクティブ・セルの列、及び、行番号をログに表示するサンプルコードを以下に記す :
  
  
【例】 
function GetActiveCell() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objCell = objSheet.getActiveCell();
  Logger.log("列 : " + objCell.getColumn());
  Logger.log("行 : " + objCell.getRow());
}

   
  
C 列、 31 行目が選択されている場合は 
  
列 : 3
行 : 31
  
と、ログ上に表示される。

2012年7月23日月曜日

データが入力されている範囲(Range)の最終行の行番号を取得する

シート内のデータ、または、数式が含まれるセルの範囲の最終行の行番号を取得する場合は
Sheet クラスの getLastRow メソッドを用いる。
  
  
【構文】
SheetObject.getLastRow()
  
戻り値 : int 型。データ、または、数式が含まれる範囲の最終行までの行数を返す。
  
  
【例】
function GetLastRow() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  Browser.msgBox("最終行: "+ objSheet.getLastRow());
}


  
  
エクセルの場合、範囲の最終行のセルの値や数式を消去してもデータが入っているものと見な
されて、消去する前と最終行が変わらない現象が EXCEL2003 まで発生していた(2007 以降
は未確認)。しかし、スプレッドシートの場合は、範囲の最終行のセルのデータを消すと範囲が
ちゃんと変わってくれるようである。列についても同様のことが確認された。

データが入力されている範囲(Range)の最終列の列番号を取得する

シート内のデータ、または、数式が含まれるセルの範囲の最終列の列番号を取得する場合は
Sheet クラスの getLastColumn メソッドを用いる。
  
  
【構文】
SheetObject.getLastColumn()
  
戻り値 : int 型。データ、または、数式が含まれる範囲の最終列までの列数を返す。
  
  
【例】
function GetLastColumn() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  Browser.msgBox("最終列 : "+ objSheet.getLastColumn());
}

データが入力されている範囲(Range)を取得する

シート内でデータが入力されている範囲 (Range) を取得するには、Sheet クラスの
getDataRange メソッドを用いる。
  
  
【構文】
SheetObject.getDataRange()
  
戻り値 : Range 型。データが入力されている範囲の Range オブジェクトが返される。
  
  
下図のように、データが入力されているアクティブになっているシートの、データ入力
範囲をアクティブにするサンプルコードを以下に記す :
  
  
  
【例】
function GetDataRange() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objSheet.getDataRange();
}
  
  
上記コードを実行した結果は下図の通り :
  
  
  
このことからわかる通り、データが A1 セルから入力されていれば良いが、上記の例の
ように、上や左に余計な余白のセルがあると、それらも含めて「データが入力されている
範囲」として認識されてしまうので要注意。

指定された範囲(Range)の最終行の行番号を取得する

シート内の指定された範囲 (Range) の最後の行の行番号を取得するには、Range クラスの
getLastRow メソッドを用いる。
  
  
【構文】
RangeObject.getLastRow()
  
戻り値 : int 型。RangeObjectの最後の行の行番号を返す。

  
  
【例】
function GetRangeLastRow() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("B2:F18");
  Browser.msgBox("最終行 : "+ objRange.getLastRow());
}
  
  
実行結果は、当然、
  
「最終行 : 18」
  
と表示される。

指定された範囲(Range)の最終列の列番号を取得する

シート内の指定された範囲 (Range) の最後の列の列番号を取得するには、Range クラスの getLastColumn メソッドを用いる。
  

  
【構文】
RangeObject.getLastColumn()
  
戻り値 : int 型。RangeObjectの最後の列の列番号を返す。
  
  

【例】
function GetRangeLastColumn() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("B2:F18");
  Browser.msgBox("最終列 : "+ objRange.getLastColumn());
}

  
  

実行結果は、
  
「最終列 : 6」
  
と表示される。

行を非表示にする

シートの特定の行を非表示にする方法は以下二通りのやり方がある。
  
先ず一つ目の方法は、Sheet クラスの hideRow メソッドを用いるやり方である。
  
  
【構文1】
SheetObject.hideRow(range)
  
range : range 型。range オブジェクトを含む行が非表示になる(ようである)。
  
  
以下の例では 10 行目が非表示になる。
  
  
【例1】
function HideRow() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("A10");
  objSheet.hideRow(objRange);
}
  
  
行を非表示にする二つ目の方法は、Sheet クラスの hideRows メソッドを用いるやり方で
ある。
  
  
【構文2】
SheetObject.hideRows(rowindex [, numrows])
  
rowindex : int 型。非表示にしたい行の行番号。複数行を非表示にする場合は最初の行。
numrows : int 型。省略可。非表示にしたい行数を指定。省略の場合は 1 とみなされる。
  
  
以下の例では 10 ~ 12 行が非表示になる。
  
  
【例2】
function HideRows() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.hideRows(10, 3);
}

列を非表示にする

シートの特定の列を非表示にする方法も二通りのやり方がある。
  
先ず一つ目の方法は、Sheet クラスの hideColumn メソッドを用いるやり方である。
  
  

【構文1】
SheetObject.hideColumn(range)
  
range : range 型。range オブジェクトを含む列を非表示にする。
  
  

以下の例では D 列が非表示になる。
  
  
【例1】
function HideColumn() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  var objRange = objSheet.getRange("D4");
  objSheet.hideColumn(objRange);
}
  
  
列を非表示にする二つ目の方法は、Sheet クラスの hideColumns メソッドを用いるやり方
である。
  
  

【構文2】
SheetObject.hideRows(columnindex [, numcolumns])
  
columnindex : int 型。非表示にしたい列の列番号。複数列を非表示にする場合は最初の列。
numcolumns : int 型。省略可。非表示にしたい列数を指定。省略時は 1 とみなされる。
  
  

以下の例では D 列と E 列が非表示になる。
  
  
【例2】
function HideColumns() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.hideColumns(4, 2);
}

2012年7月22日日曜日

行を削除する

行を削除する方法は以下に示す二通りのやり方がある。
  
先ず一つ目の方法は、Sheet クラスの deleteRow メソッドを用いるやり方である。
  
  
【構文1】
SheetObject.deleteRow(rowindex)
  
rowindex : int 型。削除したい行の行番号を指定する。
  
  
以下の例では 9 行目が非表示になる。
  
  
【例1】
function DeleteRow() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.deleteRow(9);
}
  
  
行を削除する二つ目の方法は、Sheet クラスの deleteRows メソッドを用いるやり方
である。
  
  
【構文2】
SheetObject.deleteRows(rowindex [, numrows])
  
rowindex : int 型。削除したい行の行番号。複数行を削除する場合はその最初の行。
numrows : int 型。省略可。削除したい行数を指定。省略の場合は 1 とみなされる。
  
  
以下の例では 9 ~ 11 行が非表示になる。
  
  
【例2】
function DeleteRows() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.deleteRows(9, 3);
}

列を削除する

列を削除する方法は以下に示す二通りのやり方がある。
  
先ず一つ目の方法は、Sheet クラスの deleteColumn メソッドを用いるやり方である。
  
  
【構文1】
SheetObject.deleteColumn(columnindex)
  
columnindex : int 型。削除したい列の列番号を指定する。
  
  
以下の例では C 列が非表示になる。
  
  
【例1】
function DeleteColumn() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.deleteColumn(3);
}
  
  
列を削除する二つ目の方法は、Sheet クラスの deleteColumns メソッドを用いるやり方
である。
  
  
【構文2】
SheetObject.deleteColumns(columnindex [, numcolumns])
  
columnindex : int 型。削除したい列の列番号。複数列を削除する場合はその最初の列。
numcolumns : int 型。省略可。削除したい列数を指定。省略の場合は 1 とみなされる。
  
  
以下の例では C ~ D 行が非表示になる。
  
  
【例2】
function DeleteColumns() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.deleteColumns(3, 2);
}

シートに行を挿入する

シートに行を挿入するには五通りの方法がある。

先ず一つ目の方法は、Sheet クラスの insertRowAfter メソッドを用いる方法。このメソッドを
使用した場合、第一引数で指定した行の後の行に 1 行追加される。
  
  
【構文1】
SheetObject.insertRowAfter(rowindex)
  
rowindex : int 型。rowindex で指定した行の一つ後の行に追加される。
  
  
下記の例の場合は、9 行目と 10 行目の間に 1 行追加される。
  
  
【例1】
function InsertRowAfter() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertRowAfter(9);
}
  
  
次は、Sheet クラスの insertRowBefore メソッドを用いる方法。このメソッドを使用した場合、
第一引数で指定した行の前の行に 1 行追加される。
  
  
【構文2】
SheetObject.insertRowBefore(rowindex )
  
rowindex : int 型。rowindex で指定した行の一つ前の行に追加される。
  
  
下記の例の場合は、8 行目と 9 行目の間に 1 行追加される。
  
  
【例2】
function InsertRowBefore() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertRowBefore(9);
}
  
  
三番目の方法は、Sheet クラスの insertRowsAfter メソッドを用いるやり方。この場合は、第一
引数で指定した行の後ろに、第二引数で指定した行数を挿入する方法である。
  
  
【構文3】
SheetObject.insertRowsAfter(rowindex, numrows)
  
rowindex : int 型。rowindex で指定した行の一つ後の行に追加される。
numrows : int 型。追加したい行数を指定する。
  
  
下記の例は、9 行目と 10 行目の間に 4 行追加される例である。
  
  
【例3】
function InsertRowsAfter() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertRowsAfter(9, 4);
}
  
  
四つ目の方法は、Sheet クラスの insertRowsBefore メソッドを用いるやり方。この場合は、
第一引数で指定した行の前の行に、第二引数で指定した行数を挿入する方法である。
  
  
【構文4】
SheetObject.insertRowsBefore(rowindex, numrows)
  
rowindex : int 型。rowindex で指定した行の一つ前の行に追加される。
numrows : int 型。追加したい行数を指定する。
  
  
下記の例は、8 行目と 9 行目の間に 4 行追加される例である。
  
  
【例4】
function InsertRowsBefore() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertRowsBefore(9, 4);
}
  
  
最後は、Sheet クラスの insertRows メソッドを用いる方法である。これは insertRowsBefore
メソッド同様、第一引数で指定した行の前の行に、第二引数で指定した行数を挿入する方法で
ある。但し、第二引数を省略した場合は 1 と見なされる。
  
  
【構文5】
SheetObject.insertRows(rowindex [, numrows])
  
rowindex : int 型。rowindex で指定した行の一つ前の行に追加される。
numrows : int 型。省略可。追加したい行数を指定。省略の場合は 1 を指定したのと同じ。
  
  
下記の例の場合は、【例4】と全く同じ結果が得られる。
  
  
【例5】
function InsertRows() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertRows(9, 4);
}

シートに列を挿入する

シートに列を挿入するには五通りの方法がある。
  
先ず一つ目の方法は、Sheet クラスの insertColumnAfter メソッドを用いる方法。このメソッド
を使用した場合、第一引数で指定した列の後の列に 1 列追加される。
  
  
【構文1】
SheetObject.insertColumnAfter(columnindex)
  
columnindex : int 型。columnindex で指定した列の一つ後の列に追加される。
  
  
下記の例の場合は、D 列と E 列の間に 1 列追加される。
  
  
【例1】
function insertColumnAfter() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertColumnAfter(4);
}
  
  
次は、Sheet クラスの insertColumnBefore メソッドを用いる方法。このメソッドを使用した
場合、第一引数で指定した列の前の列に 1 列追加される。
  
  
【構文2】
SheetObject.insertColumnBefore(columnindex )
  
columnindex : int 型。columnindex で指定した列の一つ前の列に追加される。
  
  
下記の例の場合は、C 列と D 列の間に 1 列追加される。
  
  
【例2】
function insertColumnBefore() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertColumnBefore(4);
}
  
  
三番目の方法は、Sheet クラスの insertColumnsAfter メソッドを用いるやり方。この場合は、
第一引数で指定した列の後ろに、第二引数で指定した列数を挿入する方法である。
  
  
【構文3】
SheetObject.insertColumnsAfter(columnindex, numcolumns)
  
columnindex : int 型。columnindex で指定した列の一つ後の列に追加される。
numcolumns : int 型。追加したい列数を指定する。
  
  
下記の例は、D 列と E 列の間に 5 列追加される例である。
  
  
【例3】
function insertColumnsAfter() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertColumnsAfter(4, 5);
}
  
  
四つ目の方法は、Sheet クラスの insertColumnsBefore メソッドを用いるやり方。この場合
は、第一引数で指定した列の前の列に、第二引数で指定した列数を挿入する方法である。
  
  
【構文4】
SheetObject.insertColumnsBefore(columnindex, numcolumns)
  
columnindex : int 型。columnindex で指定した列の一つ前の列に追加される。
numcolumns : int 型。追加したい列数を指定する。
  
  
下記の例は、C 列と D 列の間に 5 列追加される例である。
  
  
【例4】
function insertColumnsBefore() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertColumnsBefore(4, 5);
}
  
  
最後は、Sheet クラスの insertColumns メソッドを用いる方法である。
これは insertColumnsBefore メソッド同様、第一引数で指定した列の前の列に、第二引数
で指定した列数を挿入する方法である。但し、第二引数を省略した場合は 1 と見なされる。
  
  
【構文5】
SheetObject.insertColumns(columnindex [, numcolumns])
  
columnindex : int 型。columnindex で指定した列の一つ前の列に追加される。
numcolumns : int 型。省略可。追加したい列数を指定。省略の場合は 1 と見なされる。
  
  
下記の例の場合は、【例4】と全く同じ結果が得られる。
  
  
【例5】
function insertColumns() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objSheet = objSpreadsheet.getActiveSheet();
  objSheet.insertColumns(4, 5);
}