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