전 원격 시급제에서 일하는 자신을 위해, 나는 전자 표로 간단하게 새김 시스템과 유사한 것을 만들었다
23893 단어 Google Apps Script구글 양식SlackGASidea
배경.
만들어진 물건
위와 같이 전자 표에 버튼을 누르면 바로 나올 수 있다.자신만 쓸 계획이 있기 때문에 잘 보이지 않는 부분이 많으니 용서해 주세요.
작업표에 시간을 기록하고 슬랙에 메시지를 알립니다.예를 들어 일을 시작하는 버튼을 누르면 일을 시작하는 시간을 기록한다. 슬랙에는'일을 시작했다'고 쓰여 있다.라고 공지했다.또 낮 휴식 시 이탈→착석 시 착석 버튼을 눌렀을 때 휴식 시간이 더해진다.
최초의 방안으로 슬랙에서 가동을 시작하다.나는 이 말을 촉발로 삼아 오프라인 의자로 시간을 기록하는 것도 괜찮다고 생각한다.다만 "슬랙 화면만 켜면 자신에게 보낸 멤버와 참여한 게시글에 신경을 쓴다", "운행을 시작한다."일을 시작했다"고 말하고 싶었을 뿐, 이전의 메시지에 이미 읽은 것을 덧붙이고 싶지 않았다"고 말했다.이렇게 치는 것 자체가 귀찮아서 전자 표에 버튼을 눌렀다.
할 수 있는 일
프로세스 활용
설치 방법
참고 정도에 기재하다.변수명 등은 이해하기 어려울 수 있으니 용서해 주세요.
스프레드시트 설정
오프라인 작업표를 설정해서 시간대
Tokyo
를 설정하십시오.(Tokyo가 아니면 적당히 변경하세요.)게임 설정
appsscript.json으로 시간대를
Asia/Tokyo
로 바꿔 주세요.(Tokyo가 아니면 적당히 변경하세요.)Script 정의
getRange
에서 무엇을 참고하였는지 처리 내용은 본 글에 붙인 이미지와 대조하여 확인하십시오.const SLACK_WEBHOOK_URL = YOUR_WEBHOOK_URL
const postSlack = (text) => {
var options = {
"method" : "POST",
"headers": {"Content-type": "application/json"},
"payload" : '{"text":"' + text + '"}'
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}
// 時間の差分を[分]単位で返す
const calcTimesDiffMin = (fromDate, toDate) => {
const leaveTimeMs = toDate - fromDate
const leaveTimeMin = Math.floor(leaveTimeMs/1000/60)
return leaveTimeMin
}
// 始業
const start = () => {
const startDate = new Date()
const startDateString = Utilities.formatDate(startDate, 'Asia/Tokyo', 'MM/dd')
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const dateColumnVals = sheet.getRange('H:H').getValues()
// 始業時間を記録する行番号を取得する
const nextRowNum = dateColumnVals.filter(String).length + 1
// 日付、始業時間、休憩時間(初期値)を記録する
sheet.getRange(`H${nextRowNum}`).setValue(startDateString)
sheet.getRange(`I${nextRowNum}`).setValue(startDate)
sheet.getRange(`K${nextRowNum}`).setValue("00:00")
postSlack("始業しました。")
}
// 離席
const leave = () => {
const leaveDate = new Date()
const leaveDateString = Utilities.formatDate(leaveDate, 'Asia/Tokyo', 'MM/dd')
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const dateColumnVals = sheet.getRange('D:D').getValues()
// 離席時間を記録する行番号を取得する
const nextRowNum = dateColumnVals.filter(String).length + 1
// 日付、離席時間を記録する
sheet.getRange(`D${nextRowNum}`).setValue(leaveDateString)
sheet.getRange(`E${nextRowNum}`).setValue(leaveDate)
postSlack("離席しました。")
}
// 着席
const sit = () => {
const sitDate = new Date()
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const sitColumnVals = sheet.getRange('F:F').getValues()
// 着席時間を記録する行番号を取得する
const nextRowNum = sitColumnVals.filter(String).length + 1
// 着席時間を記録する
sheet.getRange(`F${nextRowNum}`).setValue(sitDate)
// 休憩時間を加算する(離席時間と着席時間の差分を休憩時間として加算する)
const startDateColumnVals = sheet.getRange('H:H').getValues()
const startDateLastRowNum = startDateColumnVals.filter(String).length
const restTime = sheet.getRange(`K${startDateLastRowNum}`).getValue()
const leaveDate = sheet.getRange(`E${nextRowNum}`).getValue()
const leaveMin = calcTimesDiffMin(leaveDate, sitDate)
restTime.setMinutes(restTime.getMinutes() + leaveMin)
sheet.getRange(`K${startDateLastRowNum}`).setValue(restTime)
postSlack("着席しました。")
}
// 終業
const end = () => {
const endDate = new Date()
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const endColumnVals = sheet.getRange('J:J').getValues()
// 終業時間を記録する行番号を取得する
const nextRowNum = endColumnVals.filter(String).length + 1
// 終業時間を記録する
sheet.getRange(`J${nextRowNum}`).setValue(endDate)
postSlack("終業しました。")
}
버튼 설정
start
만든 소감.
간단하지만 위에서 말한 것처럼 타이프 시스템과 유사한 것을 만들면 낭비된 시간과 스트레스에서 해방될 수 있다.처음에는 카드 리더기로 해보는 것도 재미있을 것 같았지만, 지금은 간단한 방법으로 상황을 관찰하고 싶다.
최후
저는 이렇게 이루어졌습니다. 다른 더 좋은 방법과 간단한 방법이 있거나 이런 서비스를 무료로 제공할 수 있습니다. 추천해주시면 꼭 댓글로 알려주세요!
Reference
이 문제에 관하여(전 원격 시급제에서 일하는 자신을 위해, 나는 전자 표로 간단하게 새김 시스템과 유사한 것을 만들었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/t_sano/articles/4d8cd07d877bb5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)