この記事は何?
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