JavaScript クラス #3

株式会社リュディアです。JavaScript クラス #1JavaScript クラス #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 ブラウザのアドレスバーに以下のような表示が出ます。

ssオブジェクト

ところどころわざとぼやかしていますが "/d/" の後から "/edit" の前までの赤で囲まれた文字列が今開いている Spreadsheet の ID、つまりここでは ss に設定する値となります。

今回は Spreadsheet を汎用的に扱うクラス SheetManager の constructor 部についてまとめました。次回はメンバ関数についてまとめていきます。

では、ごきげんよう。


いいなと思ったら応援しよう!