見出し画像

GAS × LastPassAPI スプレッドシートにLastPassに格納されている情報を書き込みたい その5 複数階層のオブジェクトから値を取り出す

前回

Object.keysやObject.values でオブジェクトのキーやプロパティをとれるのはわかった。で、階層の異なるオブジェクトをどうするんだってところからでした。

そのへんについては、こちらのブログも参考にしました。

ここで、改めて、データの構造を見てみます。

responseとして定義したオブジェクトの中は、 shared folderID(123456のような数字)をキーとして、プロパティに色々な情報を持っているオブジェクトのペアになっています。これを仮に第1階層とします。

第1階層のプロパティの中身を見てみると、下記のように5つのキーとプロパティがペアになっているオブジェクトになっています。ここを第2階層としてみます。

"sharedfoldername": "hoge",
"deleted": false,
"score": 50,
"users":  省略

ここから、usersの中身を見てみると、配列の中にオブジェクトを持っています。ここを 第3階層とでもしておきます。

    "users": [
      {
        "username": "hoge@hoge.com",
        "readonly": "0",
        "give": "1",
        "can_administer": "1",
        "superadmin": false,
        "deletedstatus": "0"
      },
      {
        "username": "fuga@hoge.com",
        "readonly": "0",
        "give": "1",
        "can_administer": "1",
        "superadmin": false,
        "deletedstatus": "0"
      },
      {
        "username": "hege@hoge.com",
        "readonly": "1",
        "give": "0",
        "can_administer": "1",
        "superadmin": false,
        "deletedstatus": "0"
      }
    ]

構造が見えてきたので、うまいこと各キーやプロパティを取り出したいですね。オブジェクトの中身を取り出す基本はドット記法またはブラケット記法でした。

というわけで、こんな感じで値を取ることができます。

ただ、これだと、特定のキーを指定して取得していることになります。
今回やりたいのは、全データを取得してシートに書き込みです。
似たような処理を繰り返すわけですから、繰り返し処理に向いているforや反復メソッドが使えそうですね。
この基本を応用して、先に示した Object.keys や、for in  やfor each でうまいことやっていきたいと思います。

続きは次回。

続き↓

#GAS
#API
#パスワード管理
#json
#httpリクエスト
#LastPass
#配列
#オブジェクト

いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!