LoginSignup
0
0

More than 1 year has passed since last update.

辞書(dict)型データを、Spreadsheetに取り込む。SmartHRのデータを想定

Posted at

この記事は何?

SmartHRデータ加工入門として作った記事の第3弾であり、最後の記事です。
https://qiita.com/piyoSakai/items/2982fb7511331e56f8fb
https://qiita.com/piyoSakai/items/21efd055635b92d14a7a

サンプルコード

こちらの記事で加工したデータを、Spreadsheetに突っ込む。

const LOADING_SHEET_NAME = 'Crews'; //ここは各自のシート名に合わせる

function crews_to_list(crews){
  let col = []
  for(let c of crews){
    let row = [
      c['email'],
      c['last_name'],
      c['first_name'],
      c['position'],
      c['is_corporate'],
      c['is_hr'],
      c['is_ms'],
      c['is_cp'],
    ];
    col.push(row);
  }
  return col;
}

function clear(sheet){
    // ざっくりクリアする。なのでLOADING_SHEETにはメモ等残せない。
    sheet.getRange(2, 1, 999, 100);
}

function load(sheet, data){
    sheet.getRange(2, 1, data.length,  data[0].length).setValues(data); //ヘッダ行を残す
};

function load_smarthr_data(){
    let crews = extract('crews'); //1つ目の記事の処理
    let summarized_crews = translate(crews); //2つ目の記事の処理
    let data_to_load = crews_to_list(summarized_crews);
    const spreadsheet = SpreadsheetApp.openById(SHEET_ID);
    let sheet = spreadsheet.getSheetByName(LOADING_SHEET_NAME);
    clear(sheet);
    load(sheet, data_to_load);
}

解説

  • load_smarthr_data()で、これまでのデータ抽出(Extract)、加工(Translate)を行っている
  • その後、辞書(dict)データを、Spreadsheetに追加しやすい配列(list)に変換ている
  • 最後に、シートをクリアし、データを突っ込んでいる

もう少しエレガントに書ける気もするが、一旦このくらいがわかりやすいかもしれない。

ちなみに、著者は最初これらをPythonで書いていたのだが、

  • 定期実行が容易であること
  • GoogleSpreadsheetへの吐き出しが容易であること

から、GASにわざわざ移植した。
一方で、型アノテーションができないなど一長一短はあるので、身近な環境から使う言語を選定するのがおすすめ。

発展編

このデータを活用して、Googleのユーザーグループを編集することができる。
このようにGoogleSpreadsheetを中間データベース兼UIとして活用することで、非エンジニアでも視覚的に理解しやすいUIでコーポレートエンジニアリングを行うことが出来る。
https://qiita.com/piyoSakai/items/e0e517c090ab061936a2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0