0

我创建了一个用于捕获用户活动的应用程序脚本表单。

所以我需要关于下面提到的场景的帮助。

当用户单击登录按钮时,脚本运行并且其他按钮禁用,直到第一个脚本成功捕获数据。一旦在数据库上捕获了登录按钮数据,他就可以单击其他按钮。请帮我解决一下这个。

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>

4

0 回答 0