7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apps ScriptAdvent Calendar 2017

Day 18

Google App Maker ー Calculated モデルを使ってスプレッドシートのデータを表示する

Posted at

App Maker のモデルには Drive Tables の他にも Calculated モデルというのがある。
Drive Tables はデータの保存に使えるが、Calculated は読み取り専用。
使いみちとしては、任意のデータをデータソースに設定できるという点が挙げられる。

App Maker はデータソースを使って画面とデータを紐付けるため、外部データを表示する場合なんかでとても重要になってくる。
スプレッドシートを読み取り専用のDBとして扱うパターンは結構多いはず。

本記事ではスクリプトからデータを作成するパターンと、スプレッドシートからデータを読み込むパターンで、どのように Calculated モデルを作るのかを解説する。

前提条件

次のようなNameEmailを持った Calculated モデルを作成しておく。
image.png

スクリプトからデータを作成

スクリプトでデータを作成していくパターン。
これをそのまま本番でつかうことはあまりないと思うが、基本なので解説しておく。

データソースの作成

次の画像は UserByScript という名前でデータソースを作った例。
image.png

コードは次のように記述する。

var records = [];

for (var i = 0; i < 10; i++) {
  var record = app.models.User.newRecord();
  record.Name = '名前'+ i;
  record.Email = 'hogehoge'+ i+ '@example.com';
  records.push(record);
}

return records;

ポイントは2点

  1. app.models.{モデル名}.newRecord() で モデルに対応するレコードを作る
  2. 1.のレコードの配列を return する

Tables ウィジェットで実際に画面に表示したところ

Name と Email が設定されていることが確認できる。
image.png

スプレッドシートからデータを作成

データを読み込むスプレッドシートを用意

事前に作成しておく。
image.png

データソースの作成

次の画像は UserBySpreadSheet という名前でデータソースを作った例。
image.png

コードは次のように記述する。
読み込むデータが違うだけで返却しているのはスクリプトからデータを作成した場合と同じになっているのがわかる。

var records = [];

var sheets = SpreadsheetApp.openById('1jqeCaq_8Ae1TaFIiNEcfJTQoYBM0z4d3uXLmgtaA_JU');
var sheet = sheets.getSheetByName('user');
var values = sheet.getDataRange().getValues();

var nameColumn, emailColumn;

for(var i = 0, len = values[0].length; i < len; i++){
  if(values[0][i] === 'Name'){
    nameColumn = i;
  }
  if(values[0][i] === 'Email'){
    emailColumn = i;
  }
}

for (var i = 1; i < values.length; i++) {
  var record = app.models.User.newRecord();
  record.Name = values[i][nameColumn];
  record.Email = values[i][emailColumn];
  records.push(record);
}

return records;

Tables ウィジェットで実際に画面に表示したところ

スプレッドシートの Name と Email が設定されていることが確認できる。
image.png

参考サイト

Calculated Models  |  App Maker  |  Google Developers

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?