やりたいこと
勤怠管理システムをgasで作成しています。htmlで「出勤」と「退勤」ボタンを用意し、それぞれをクリックすれば、自動的にspreadsheetにその日付とスタッフID,出勤時間、退勤時間が記録される仕組みです。
問題点
出勤ボタンをクリックすると、特定の行に、値は入りますが、出勤と退勤で行が異なる問題に直面しています。
これを修正し、出勤ボタンを押した時には、
0. 本日の日付
0. スタッフのID
0. 出勤時間
退勤ボタンを押した時には、
0. 退勤時間
コード
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <meta charset="UTF-8"> 6 <meta viewport="width=device-width, initial-scale=1"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 <?!=HtmlService.createHtmlOutputFromFile('css').getContent(); ?> 9 </head> 10 <body> 11 <div class="main"> 12 <div class="container"> 13 <div class="row"> 14 <div class="col-md-8 col-md-offset-2"> 15 <div class="row"> 16 <div class="col-md-6"> 17 <canvas width="300" height="260"> 18 Canvas not supported 19 </canvas> 20 <h1 id="time"></h1> 21 </div> 22 <div class="col-md-6"> 23 <form action="https://script.google.com/macros/s/AKfycbxPBqLtX3253ejqzTihglqYt8SifoZK9CmZwXPePj_niFIhnD9W/exec" method="post"> 24 <label for="staffId" class="form-label">Staff ID</label> 25 <input type="text" class="form-control mb-3" id="staffId" name="staffId"> 26 <button type="submit" id="attend-btn" class="btn btn-primary mb-3 btn-lg" name="attend" value="出勤時間" onclick="attendTime()">出勤</button> 27 <button type="submit" id="leave-btn" class="btn btn-primary mb-3 btn-lg" name="leave" value="退勤時間" onclick="leaveTime()">退勤</button> 28 </form> 29 </div> 30 </div> 31 </div> 32 </div> 33 </div> 34 </div> 35 <?!= HtmlService.createHtmlOutputFromFile("js").getContent(); ?> 36 </body> 37</html>
js
1<script> 2 google.script.run.withSuccessHandler.attendTime(); 3 google.script.run.withSuccessHandler.leaveTime(); 4</script>
gas
1//doGetでindex.htmlを表示する 2function doGet(){ 3 const htmlOutput = HtmlService.createTemplateFromFile("index").evaluate(); 4 return htmlOutput; 5} 6 7 8//doGetでindex.htmlに入力された値を取得してスプシへ移行 9function doPost(e){ 10 const ss = SpreadsheetApp.openById('@@@@@@@'); 11 // スプレッドシートの中のシート名を指定して変数に格納。 12 const recordSheet = ss.getSheetByName('データ'); 13 14 //結果 15 const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd'); 16 const id = e.parameters.staffId; 17 const array = [date,id,attendTime(),leaveTime()]; 18 recordSheet.appendRow(array); 19 20 //送信後に返されるページ 21 //var resultpage = HtmlService.createTemplateFromFile("result"); 22 //return resultpage.evaluate(); 23 24} 25 26//関数 attendTime() の定義 27function attendTime(){ 28 const attendTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'HH:mm'); 29 return attendTime; 30} 31 32//関数 leaveTime の定義 33function leaveTime(){ 34 const leaveTime = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'HH:mm'); 35 return leaveTime; 36}
様々な方にご助言いただき、少しづつ修正しここまで来ており、もう少しなのですがお力をお貸しいただければ幸いです。。
回答2件
あなたの回答
tips
プレビュー