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 件のコメント:
コメントを投稿