2021年3月23日火曜日

2021/03/16

 3


宿題であったロゴとシステム名を持ち寄り、それぞれ考えてきたもので話し合いました。

また、前回書き出したユースケースについて、ユースケース記述をそれぞれ行いました。


4


SPIを前半にしました。私とは毎回相性が悪く途中で心が折れましたが、粘り強く取り組みたいと思います。

後半には久しぶりにプログラミングをしました。スプレッドシートから情報を取得できるようにしました。

Logger.log(JSON.stringify(data, null, ' ')); は、テストをするときに重要で、' 'の間に半角スペースを入れると実行結果が見やすく表示されます。



スプレッドシートから個人データを読み込む関数の作成

学生の基本情報(学籍番号、氏名、性別、生年月日、連絡先、血液型)を1行につき1学生分記録したシートを読み込んでJSON形式のデータを作成する関数loadPersonalDataFromSpreadsheetを作成した(下図)。

図1.基本情報

このプログラムのポイントは、データの領域をgetRange().getValues()メソッドでいったん2次元配列valuesに読み込んで、以降は、この配列から学生基本情報オブジェクトdataを作成している点である。このようにするのは1セルずつスプレッドシートにアクセスすると、大量にデータがある場合、時間がかかるからである。

/**
 * スプレッドシートから個人データを読み込む
 */
function loadPersonalDataFromSpreadsheet() {
  // シート「基本情報」からJSONJSONデータを作成する
  const kihon = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('基本情報');
  const numColumns = kihon.getLastColumn();
  const numRows = kihon.getLastRow() - 1;
  const values = kihon.getRange(2, 1, numRows, numColumns).getValues();
  const data = [];
  for(let i = 0; i < values.length; i++) {
    data.push(
      {
        "id": values[i][0],
        "name": values[i][1],
        "attribute": {
          "gender": values[i][2],
          "birth": values[i][3],
          "phone_number": values[i][4],
          "blood_type": values[i][5]
        }
      }
    );
  }
  Logger.log(JSON.stringify(data, null, ' '));
  return data;
}

この関数を実行して得られる結果を下記に示す(下から3行目のLogger.logの出力)。

[
 {
  "id": "w3400000",
  "name": "川崎 太郎",
  "attribute": {
   "gender": "男",
   "birth": "1999-03-31T15:00:00.000Z",
   "phone_number": "086-462-1111",
   "blood_type": "A"
  }
 },
 {
  "id": "w3400001",
  "name": "倉敷 花子",
  "attribute": {
   "gender": "女",
   "birth": "1999-12-25T15:00:00.000Z",
   "phone_number": "086-462-1234",
   "blood_type": "O"
  }
 },
 {
  "id": "w3400199",
  "name": "岡山 大二郎",
  "attribute": {
   "gender": "男",
   "birth": "2000-03-10T15:00:00.000Z",
   "phone_number": "086-464-6532",
   "blood_type": "B"
  }
 },
 {
  "id": "w3400256",
  "name": "水島 夢子",
  "attribute": {
   "gender": "女",
   "birth": "1999-04-30T15:00:00.000Z",
   "phone_number": "080-1234-5678",
   "blood_type": "AB"
  }
 }
]

0 件のコメント:

コメントを投稿