我创建了一个用于捕获用户活动的应用程序脚本表单。
所以我需要关于下面提到的场景的帮助。
当用户单击登录按钮时,脚本运行并且其他按钮禁用,直到第一个脚本成功捕获数据。一旦在数据库上捕获了登录按钮数据,他就可以单击其他按钮。请帮我解决一下这个。
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 6 mins ago.
(Private feedback for you)
function clockInOut(payload){
console.log(payload)
const ss =SpreadsheetApp.getActiveSpreadsheet()
const wsData = ss.getSheetByName("Run")
const now = new Date();
const d= wsData.getDataRange().getDisplayValues().reverse();
const emp_i = d.findIndex(r=> r[1]== payload.empid && r[2] !== payload.action && r[0] === payload.vcode);
if(emp_i !==-1){
Logger.log(emp_i)
wsData.getRange(d.length-emp_i,6).setValue(now);
}
const a= wsData.getDataRange().getDisplayValues().reverse();
const emp_c = a.findIndex(r=> r[1]== payload.empid && r[2] == payload.action && r[0] === payload.vcode );
Logger.log(a)
Logger.log(emp_c)
if(emp_c !==-1 && a[emp_c][5] ==""){
throw new Error("error")
}
wsData.appendRow([payload.vcode,payload.empid,payload.action,payload.work,now])
}
ClockInOutApp.clockInOut = function(e){
const payload = {
empid :ClockInOutApp.empidInput.value,
vcode :ClockInOutApp.vcodeInput.value,
work :ClockInOutApp.workInput.value,
action : e.target.dataset.action
}
<form id="main-form">
<div class="form-inline">
<div class="w3-row w3-padding">
<div class="col">
<label for="employee" class="text-bold fg-white">Logged in as</label>
<select class="input-group-text bg-white" class="w3-select w3-yellow" id="employee">
<? for(let i=[0];i<emp.length;i++){ ?>
<option>
<?= emp[i]; ?>
</option>
<? }?>
</select>
</div>
</div>
<div class="form-inline">
<div class="w3-row w3-padding w3-cell">
<div class="w3-full w3-padding">
<button id="clock-in" class="w3-button w3-red" type="submit" data-action = "Login" onclick="
Metro.activity.open({autoHide: 10000})" >LogIn</button>
<button id="clock-out" class="w3-button w3-black" type="submit"data-action = "LogOut"onclick="
Metro.activity.open({autoHide: 10000})
" >LogOut</button>
</div>
</div>
</div>
<div class="form-inline">
<div class="w3-row w3-padding w3-cell">
<div class="w3-full w3-padding" class="col-auto">
<button id="clock-breakf" class="button success" type="submit"data-action = "Short Break" class="button info" onclick="
Metro.activity.open({type: 'bars',autoHide: 6000})">Short Break</button>
<button id="clock-break" class="button success" type="submit"data-action = "Lunch/Dinner Break"class="button info" onclick="
Metro.activity.open({type: 'bars',autoHide: 6000})" >Lunch/Dinner</button>
<script>
google.script.run.withSuccessHandler(() =>{
ClockInOutApp.message.classList.remove("d-none")
setTimeout(() => {ClockInOutApp.message.classList.add("d-none")},5000)
}).withFailureHandler(()=>{
ClockInOutApp.mess.classList.remove("d-none")
setTimeout(() => {ClockInOutApp.mess.classList.add("d-none")},5000)
}).clockInOut(payload)
}
document.addEventListener("DOMContentLoaded",ClockInOutApp.onload)
</script>