2021年3月30日火曜日

2021/03/30

 3限

引き続きユースケースについて考えました。半分以上考えることができているので、ユースケースについては、あとひと踏ん張りです。

また、初めてGoogleホームを使ってみました。まずは初期設定です(設定方法)。時間を使ってしまいましたが、何とか設定することができました。声をかけると反応してくれたことに感動しました。技術の進化はすごかった...。

4限も先週に引き続き、スプレッドシートを利用しました。日付を日本の時刻で表示する、個人データをJSON形式でかえすWebサービスについて学びました。


来週から授業が始まりますが、頑張りましょう~!!!



世界標準時刻(UTC)と日本標準時刻(JST)

GASの日時型を表示する際に注意しなければならないのは、日本標準時刻に変換しなければならない点である。これを行うのがUtilities.formatDate()関数である。

日付データdateを日本標準時刻(JST)の年月日に変換するには次のようにする。

Utilities.formatDate(date, 'JST', 'yyyy/MM/dd')

これを利用して前回作成したスプレッドシートから個人データを読み込む関数loadPersonalDataFromSpreadsheet()の個人情報の生年月日を日本標準時刻に変換するプログラムは次のようになる。attribute.birthの部分に注目して欲しい。スプレッドシートから読み込んだ日付データvalues[i][3]をUtilities.formatDate関数を使って年月日に変換している。

/**
 * スプレッドシートから個人データを読み込む
 */
function loadPersonalDataFromSpreadsheet() {
  // 資格、趣味、部活・サークルをスプレッドシートから読み込む
  const certification = loadDataFromSpreadsheet('資格');
  const hobby = loadDataFromSpreadsheet('趣味');
  const club = loadDataFromSpreadsheet('部活・サークル');
  // シート「基本情報」から個人データを読み込んでオブジェクトを作成する
  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": Utilities.formatDate(values[i][3], 'JST', 'yyyy/MM/dd'),
          "phone_number": values[i][4],
          "blood_type": values[i][5]
        },
        "certification": certification[values[i][0]],
        "hobby": hobby[values[i][0]],
        "club": club[values[i][0]],
      }
    );
  }
  Logger.log(JSON.stringify(data, null, ' '));
  return data;
}

個人データをJSON形式で返すWebサービス

ここまででスプレッドシートに格納した個人データをオブジェクトに変換するプログラムが完成したので、指定した学籍番号の個人情報をJSON形式で返すWebサービスを作成する。

そのためにまず、idを指定して個人データを取得する関数getPersonById()を作成する。

/**
 * idを指定して個人データを取得する関数
 */
function getPersonById(id) {
  let person = null;
  const data = loadPersonalDataFromSpreadsheet();
  for(var i = 0; i < data.length; i++) {
    if(id == data[i].id) {
      person = data[i];
      break;
    }
  }
  return person;
}

これを利用してHTTPリクエストのGETメソッドで指定したidの個人データをJSON形式で返すWebサービスのエントリポイントをdoGet()関数で作成する。

function doGet(e) {
  const parm = e.parameter;
  const data = loadPersonalDataFromSpreadsheet();
  const person = getPersonById(parm.id);
  return ContentService.createTextOutput(JSON.stringify(person)).setMimeType(ContentService.MimeType.JSON);
}

これをデプロイしてWebアプリのURLを作成すれば下記のようなWebサービスが完成する。

図1.完成したWebサービス


0 件のコメント:

コメントを投稿