Google表单会询问持续时间,以及如何使用Google App Script计算

时间:2018-03-16 15:27:36

标签: google-apps-script google-form

我经常使用stackoverflow来找到问题的答案,但我似乎无法解决这个问题。所以这是我的第一个问题:

我有一张Google表单(其中包括)询问工作的持续时间。我希望谷歌电子表格包含表单答案,并添加一些列。在这种情况下,我想使用126的小时费率来添加工作成本, -

但是我在计算持续时间方面一直遇到问题:我的脚本要么告诉我它的文本(如果我在检索数据时使用getDisplayValue),要么在电子表格本身给出了#NUM错误。

有人能指出我如何从表格字段中检索小时和分钟(时间作为持续时间),所以我可以在脚本中用它做一些基本的数学运算吗?

我已经设置了一个小表单并连接了显示我的问题的电子表格。示例表单只询问持续时间,并将其放在第2列的电子表格中。在电子表格中,我设置了一个在表单上运行的脚本提交,我尝试解释我所做的所有步骤。脚本应采用表单输入,将其转换为小时(作为num-field)并将其与PricePerHour相乘。结果应放在表单提交的同一行的第3列中。

到目前为止,这是我的脚本:

// CALCULATE COST OF JOB
function calculatePriceDuration(e) {

  // get source data
  var sourceSheet          = SpreadsheetApp.getActiveSheet();                                            // connect to source sheet
  var sourceRow            = sourceSheet.getActiveRange().getRow();                                      // connect to event row (form submit)


  // get destination data
  var destinationSheet    = sourceSheet;                                                                 // connect to destination sheet
  var destinationRow      = sourceRow;                                                                   // connect to destination row
  var destinationColID    = 3;                                                                           // set column number of value to paste


  // set variables
  var colID_FormDuration   = 2;                                                                          // set column number where the form places the duration
  var formDuration         = sourceSheet.getRange(sourceRow, colID_FormDuration).getDisplayValue();      // get value for duration 


  // set price per hour 
  var PricePerHour         = 126;

  // calculate job price
  var PriceForJob          = formDuration * PricePerHour;

  // set destination cell
  destinationSheet.getRange(destinationRow,destinationColID).setValue(PriceForJob);                      // paste value in the 3rd column of the same row of form submit

}

可以找到电子表格本身here

可以找到表单here

非常感谢任何帮助! 亲切的问候, 罗布

2 个答案:

答案 0 :(得分:0)

试试这个:

function calcTimeDifference(Start,End)
{
  if(Start && End)
  {
    var second=1000;
    var minute=60*second;
    var hour=minute*60;
    var day=hour*24;
    var t1=new Date(Start).valueOf();
    var t2=new Date(End).valueOf();
    var d=t2-t1;
    var days=Math.floor(d/day);
    var hours=Math.floor(d%day/hour);
    var minutes=Math.floor(d%day%hour/minute);
    var seconds=Math.floor(d%day%hour%minute/second);
    return 'dd:hh:mm:ss\n' + days + ':' + hours + ':' + minutes + ':' + seconds;  
  }
  else
  {
    return 'Invalid Inputs';
  }
}

答案 1 :(得分:0)

感谢chirag90编辑我的问题,tehhowch和cooper为我提供了答案。不幸的是,我的Javascript技能太差了,无法真正理解你的答案。

幸运的是,我发现StackOverflow上的this post是我问题的完美解决方案:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<link href="css/lightbox.min.css" rel="stylesheet">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Audit Evidence</title>
</head>
<body onload="hide1()">


<%String filename1 = (String)request.getAttribute("filename1"); %>
<%String filename2 = (String)request.getAttribute("filename2"); %>
<%String filename3 = (String)request.getAttribute("filename3"); %>
<%String filename4 = (String)request.getAttribute("filename4"); %>
<%String filename5 = (String)request.getAttribute("filename5"); %>
<%String filename6 = (String)request.getAttribute("filename6"); %>
<%String filename7 = (String)request.getAttribute("filename7"); %>
<%String filename8 = (String)request.getAttribute("filename8"); %>
<%String filename9 = (String)request.getAttribute("filename9"); %>
<%String filename10 = (String)request.getAttribute("filename10"); %>
<%String filename11 = (String)request.getAttribute("filename11"); %>
<%String filename12 = (String)request.getAttribute("filename12"); %>
<%-- 
<img src="/AuditEvidenceImages/<%=filename1%>" ><BR>
<%=filename1%><BR><BR>

<img src="/AuditEvidenceImages/<%=filename2%>" ><BR>
<%=filename2%><BR><BR>

<img src="/AuditEvidenceImages/<%=filename3%>" ><BR>
<%=filename3%><BR><BR> 

<img id="imgZoom" src="/AuditEvidenceImages/<%=filename1%>"><BR> --%>

<a href="/AuditEvidenceImages/<%=filename1%>" data-lightbox="AuditEvidence" data-title="first image"><img id="filename1" class="Evidence" src="/AuditEvidenceImages/<%=filename1%>" alt="" height="150px" width="150px"  /></a>
<a href="/AuditEvidenceImages/<%=filename2%>" data-lightbox="AuditEvidence" data-title="second image"><img id="filename2" class="Evidence" src="/AuditEvidenceImages/<%=filename2%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename3%>" data-lightbox="AuditEvidence" data-title="third image"><img id="filename3"  class="Evidence" src="/AuditEvidenceImages/<%=filename3%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename4%>" data-lightbox="AuditEvidence" data-title="fourth image"><img id="filename4" class="Evidence" src="/AuditEvidenceImages/<%=filename4%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename5%>" data-lightbox="AuditEvidence" data-title="fifth image"><img id="filename5" class="Evidence" src="/AuditEvidenceImages/<%=filename5%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename6%>" data-lightbox="AuditEvidence" data-title="sixth image"><img id="filename6" class="Evidence" src="/AuditEvidenceImages/<%=filename6%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename7%>" data-lightbox="AuditEvidence" data-title="seventh image"><img id="filename7" class="Evidence" src="/AuditEvidenceImages/<%=filename7%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename8%>" data-lightbox="AuditEvidence" data-title="eighth image"><img id="filename8" class="Evidence" src="/AuditEvidenceImages/<%=filename8%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename9%>" data-lightbox="AuditEvidence" data-title="ninth image"><img id="filename9" class="Evidence" src="/AuditEvidenceImages/<%=filename9%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename10%>" data-lightbox="AuditEvidence" data-title="tenth image"><img id="filename10" class="Evidence" src="/AuditEvidenceImages/<%=filename10%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename11%>" data-lightbox="AuditEvidence" data-title="eleventh image"><img id="filename11" class="Evidence" src="/AuditEvidenceImages/<%=filename11%>" alt="" height="150px" width="150px"/></a>
<a href="/AuditEvidenceImages/<%=filename12%>" data-lightbox="AuditEvidence" data-title="twelveth image"><img id="filename12" class="Evidence" src="/AuditEvidenceImages/<%=filename12%>" alt="" height="150px" width="150px"/></a>


<script src="js/lightbox-plus-jquery.min.js"></script>
   <script>


   function hide1() {


        if (<%=filename1%> == null) {
            document.getElementById("filename1").style.visibility = "hidden"; 
        }


        if (<%=filename2%> == null) {
            document.getElementById("filename2").style.visibility = "hidden";
        }


        if (<%=filename3%> == null) {
            document.getElementById("filename3").style.visibility = "hidden";
        }


        if (<%=filename4%> == null) {
            document.getElementById("filename4").style.visibility = "hidden";
        }


        if (<%=filename5%> == null) {
            document.getElementById("filename5").style.visibility = "hidden";
        }


        if (<%=filename6%> == null) {
            document.getElementById("filename6").style.visibility = "hidden";
        }


        if (<%=filename7%> == null) {
            document.getElementById("filename7").style.visibility = "hidden";
        }


        if (<%=filename8%> == null) {
            document.getElementById("filename8").style.visibility = "hidden";
        }


        if (<%=filename9%> == null) {
            document.getElementById("filename9").style.visibility = "hidden";
        }


        if (<%=filename10%> == null) {
            document.getElementById("filename10").style.visibility = "hidden";
        }


        if (<%=filename11%> == null) {
            document.getElementById("filename11").style.visibility = "hidden";
        }


        if (<%=filename12%> == null) {
            document.getElementById("filename12").style.visibility = "hidden";
        }
    }

    </script> 
</body>
</html>  

再次感谢您的努力,也许您可​​以指导我(在线/荷兰)课程,在那里我可以学习正确使用Javascript。