JavaScript クラス #3
株式会社リュディアです。JavaScript クラス #1 、JavaScript クラス #2 で JavaScript のクラスについて基本的なことをまとめました。今回から実際に使えるコードを作っていきます。掲載するソースコードはすべて GAS の開発環境で動作確認をしています。
GAS で Spreadsheet を操作する方法まとめで記載している Spreadsheet を汎用的に扱えるクラスを作ってみたいと思います。まずクラスの定義を行います。以下のコードをみてください。
class SheetManager {
constructor( ss, sheetName ) {
this._sheet = ss.getSheetByName( sheetName );
this._startRow = 1;
this._lastRow = this._sheet.getLastRow();
this._numOfRows = this._lastRow - this._startRow + 1;
this._startColumn = 1;
this._lastColumn = this._sheet.getLastColumn();
this._numOfColumns = this._lastColumn - this._startColumn + 1;
this._range = this._sheet.getRange( this._startRow, this._startColumn, this._numOfRows, this._numOfColumns );
this._data = this._range.getValues();
}
getStartRow() { return this._startRow; }
getLastRow() { return this._lastRow; }
getNumOfRows() { return this._numOfRows; }
getStartColumn() { return this._startColumn; }
getLastColumn() { return this._lastColumn; }
getNumOfColumns() { return this._numOfColumns; }
getData() { return this._data; }
getValue( row, column ) { return this.getData()[ row ][ column ]; }
setValue( row, column, value ) { this.getData()[ row ][ column ] = value; }
updateSpreadSheet() {
this._range.setValues( this.getData() );
}
}
Spreadsheet を汎用的に扱うための SheetManager クラスの定義例です。最初に注意事項です。このコードはスプレッドシート内でスクリプトファイルを使っている場合、いわゆるコンテナバインド型では利用できません。Google ドライブの新規作成から Google Apps Script を選択して GAS のファイルを独立して別途作成、いわゆるスタンドアロン型の GAS スクリプトで試してください。
constructor 内部を見ていきます。constructor の引数は Spreadsheet オブジェクトである ss と、Spreadsheet 内のシート名です。ファイル名とシート名を指定して該当するシートを open しているイメージです。Spreadsheet オブジェクト ss の値の取得方法は後述します。
次にGAS で Spreadsheet を操作する #2 でまとめたように Spreadsheet 中でセルに値が設定されている範囲を取得しています。getLastRow( ), getLastColumn( ) を覚えていますか? そして行、列の情報を使って変数 _range に Spreadsheet から取得したいセル範囲を設定します。最後に変数 _range の getValue( ) を使ってセルの値を _data に取得します。クラス内で使用する変数は変数名の前に "this." が必要であることに注意してください。
ここで先に出てきた ss の値の取得方法について説明します。Google ドライブで Spreadsheet を開くと下図のように WEB ブラウザのアドレスバーに以下のような表示が出ます。
ところどころわざとぼやかしていますが "/d/" の後から "/edit" の前までの赤で囲まれた文字列が今開いている Spreadsheet の ID、つまりここでは ss に設定する値となります。
今回は Spreadsheet を汎用的に扱うクラス SheetManager の constructor 部についてまとめました。次回はメンバ関数についてまとめていきます。
では、ごきげんよう。