Community

コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。

  • 投稿

    アバターkkkokumura

    勤怠実績の抽出と整形について

    初心者な質問で申し訳ありません。
    人事労務に於いて、APIを使って勤怠実績をgoogleスプレッドシートに展開しようとしています。

    ■整形について
    勤怠実績の抽出を行った際、例えば出勤時間(clock_in_at)は「2019-06-01T09:00:00.000+09:00」と
    いったカタチで抽出されます。
    これを日付部分は無視して「9:00」といった感じで整形したいのですが、可能でしょうか。

    ■null値の取り扱いについて
    同じく勤怠実績を抽出した際、打刻実績がなかった場合、「null」ということでエラーが表示されます
    これを回避する方法ありますでしょうか。

    下記サンプルです。
    //勤怠実績を取得
    var spsheet = SpreadsheetApp.getActiveSpreadsheet(); //アクティブなスプレッドシートを取得
    var sheet = spsheet.getActiveSheet(); //アクティブなスプレッドシートのアクティブシートを取得
    var data = UrlFetchApp.fetch( requestUrl , options ); //勤怠実績の取得
    var kintai = JSON.parse( data .getContentText()); //取得した実績をJSON形式で格納

    //取得したデータをシートに反映
    var range = sheet.getRange(“A2:J44000”);
    range.clear(); //シート情報のクリア

    //勤怠実績の取得
    for(var i=0; i<=31; i++) {
    sheet.getRange( 2+i, 1 ).setValue( kintai[“work_records”][i][“date”] ); //年月日
    sheet.getRange( 2+i, 2 ).setValue( kintai[“work_records”][i][“clock_in_at”] ); //出勤時間
    sheet.getRange( 2+i, 3 ).setValue( kintai[“work_records”][i][“clock_out_at”] ); //退勤時間
    sheet.getRange( 2+i, 4 ).setValue( kintai[“work_records”][i][“break_records”][0][“clock_in_at”] ); //休憩開始時間
    sheet.getRange( 2+i, 5 ).setValue( kintai[“work_records”][i][“break_records”][0][“clock_out_at”] ); //休憩終了時間
    sheet.getRange( 2+i, 6 ).setValue( kintai[“work_records”][i][“total_overtime_work_mins”] ); //時間外勤務時間(分)
    sheet.getRange( 2+i, 7 ).setValue( kintai[“work_records”][i][“total_latenight_work_mins”] ); //深夜勤務時間(分)
    sheet.getRange( 2+i, 8 ).setValue( kintai[“work_records”][i][“paid_holiday”] ); //有給取得
    }

    回答

    アバターyakumo

    GAS を利用している感じでしょうか?

    > 整形について

    https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String)
    こちら利用すれば出来ると思います。

    ※ SinpleDateFormat: https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html

    ex) 
    var dateStr = “2019-06-01T09:15:00.000+09:00”;
    var date = new Date(dateStr);
    var dispDateStr = Utilities.formatDate(date, “JST”, “H:mm”);

    > null に関して
    null がでてしまうのは kintai のどこかでしょうか?
    詳細わかりませんが、javascript の連想配列とnull の取り扱いを調べてみて下さい。

    連想配列: https://www.sejuku.net/blog/27965
    null の扱い: https://qiita.com/phi/items/723aa59851b0716a87e3