2014-12-28 192 views
2

My small form-handling script似乎不知何故中斷了google.run.script。我調用它是這樣的:google.script.run無法正常工作:未捕獲InvalidArgumentError:由於財產中的非法值失敗:0

google.script.run.withSuccessHandler(worked).verwerkForm(this.parentNode); 

當運行此腳本就是我得到的一個錯誤:

Uncaught InvalidArgumentError: Failed due to illegal value in property: 0

以前的版本運行的很好,我不知道它是什麼,我這樣做打破了碼。谷歌應用程序的腳本,當談到錯誤消息或文檔時,會讓它變得非常煩人。如果任何人都可以幫助那會很棒!

僅供參考我還提交了這裏的一個問題:google script issue report

索引文件我使用:

> <?!= include('Stylesheet'); ?> <div class="container"> <h1 
> id="PageHeader">World Basketball Coaches Community - 
> Inschrijving/Application</h1> <img 
> src="https://drive.google.com/a/apps.howest.be/uc?export=view&id=0B1m3_53fwZc8cmdKYjJvakk3WDA"/> 
> <p id="required">* required</p> <form id="form"> 
>  <div class="special"> 
>   <p>Aanhef <span class="required">*</span></p> 
>   <label><input type="radio" name="voorvoegsel" value="Mr" checked />Mr</label> 
>   <label><input type="radio" name="voorvoegsel" value="Mrs"/>Mrs</label> 
>   <label><input type="radio" name="voorvoegsel" value="Miss"/>Miss</label> 
>   <span></span> 
>  </div> 
>  <div> 
>   <label for="voornaam">Voornaam /Prénom /First name <span class="required">*</span></label> 
>   <input type="text" name="voornaam" id="voornaam" placeholder="Voornaam"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="naam">Naam /Nom /Name <span class="required">*</span></label> 
>   <input type="text" name="naam" id="naam" placeholder="Naam"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="geboortedatum">Geboortedatum/ Date de naissance/ Date of birth <span class="required">*</span></label> 
>   <input type="date" name="geboortedatum" id="geboortedatum"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="nationaliteit">Nationaliteit/Nationalité/Nationaliteit <span class="required">*</span></label> 
>   <input type="text" name="nationaliteit" id="nationaliteit" placeholder="Nationaliteit"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="stad">Stad/Ville/City <span class="required">*</span></label> 
>   <input type="text" name="stad" id="stad" placeholder="Stad"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="land">Land/Pays/Country <span class="required">*</span></label> 
>   <input type="text" name="land" id="land" placeholder="Land"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="opleiding">Opleiding/ Education <span class="required">*</span></label> 
>   <select name="opleiding" id="opleiding" > 
>    <option value=" "></option> 
>    <option value="secondary school">Secondary school</option> 
>    <option value="high school">High school </option> 
>    <option value="bachelor">Bachelor</option> 
>    <option value="master">Master</option> 
>    <option value="university">University</option> 
>   </select> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="gsm">Gsm <span class="required">*</span></label> 
>   <input type="text" name="gsm" id="gsm" placeholder="+32 000 00 00 00"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="email">E-mail <span class="required">*</span></label> 
>   <input type="email" name="email" id="email" placeholder="[email protected]"/> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="passport">Upload passport or ID copy (PDF or JPEG) <span class="required">*</span></label> 
>   <input type="file" name="passport" accept="image/jpeg,application/pdf" id="passport"> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label for="color_passport">Upload color passport size photo (JPEG)<span class="required">*</span></label> 
>   <input type="file" name="pic" accept="image/jpeg" id="color_passport"> 
>   <span class="fout"></span> 
>  </div> 
>  <div class="permission"> 
>   <label for="akkoord"> 
>    Ik geef mijn akkoord om deze gegevens aan FIBA over te maken in het kader van de "World Basketball Coaches Community". 
>    Je donne mon accord pour le transfert de mes données à la FIBA dans le cadre du projet "World Basketball Coaches Community" 
> <span class="required">*</span> 
>   </label> 
>   <section id="checkPermission"><input type="checkbox" value="ja" id="akkoord"/> Ik ben akkoord</section> 
>   <span class="fout"></span> 
>  </div> 
>  <div> 
>   <label></label> 
>   <input type="button" value="Submit" onclick="submit()"/> 
>  </div> </form> </div> <div id="result" class='hide'> 
>  </div> <?!= include('testJavascript'); ?> 

TestJavascript我使用:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 
function submit() { 
     google.script.run.withSuccessHandler(worked).verwerkForm(this.parentNode); 
} 

function worked() { 
    $(".container").remove(); 
    $("#result").html('<h1>Dank je uw registratie is een succes!</h1>').removeClass('hide'); 
} 
</script> 

和css:

<style> 
body { 
    font-family: Verdana,Arial,sans-serif; 
    background-image: -webkit-gradient(
     linear, 
     left top, 
     left bottom, 
     color-stop(0.08, #0D2C91), 
     color-stop(0.76, #0788B3) 
    ); 
    background-image: -o-linear-gradient(bottom, #0D2C91 8%, #0788B3 76%); 
    background-image: -moz-linear-gradient(bottom, #0D2C91 8%, #0788B3 76%); 
    background-image: -webkit-linear-gradient(bottom, #0D2C91 8%, #0788B3 76%); 
    background-image: -ms-linear-gradient(bottom, #0D2C91 8%, #0788B3 76%); 
    background-image: linear-gradient(to bottom, #0D2C91 8%, #0788B3 76%); 
} 

h1#PageHeader { 
    margin-bottom:10px; 
} 

.container { 
    margin: 0 auto; 
    width: 80%; 
    border-left: 1px solid blue; 
    border-right: 1px solid blue; 
    background: white; 
    padding: 10px 10px; 
    text-align:center; 
} 

.container form{ 
    display:inline-block; 
} 

.hide{ 
    display: none; 
} 

h1 { 
    margin: 0 auto; 
    display: block; 
} 

img { 
    width: 20%; 
    margin: 0 auto; 
    display: block; 
} 

.required { 
    color: #ff4444; 
    font-weight: 400; 
} 

span.fout { 
    display:block; 
    color : #ff4444; 
    margin-left: 36%; 
} 

input.fout { 
    color : #ff4444; 
    border: 1px solid red !important; 
} 

form { 
    width:80%; 
    text-align:left; 
} 

form div { 
    margin: 10px 0; 
    display: block; 
} 

form div label { 
    box-sizing: border-box; 
    display: inline-block; 
    padding: 5px; 
    width: 35%; 
    font-weight: 800; 
    font-family: Calibri; 
} 

input, select { 
    display: inline-block; 
    width: 50%; 
} 

input[type="text"], input[type="date"], input[type="email"], #opleiding { 
    padding: 4px; 
    font-size: 14px; 
    line-height: 1.42857143; 
    color: #555; 
    background-color: #fff; 
    background-image: none; 
    border: 1px solid #ccc; 
    border-radius: 4px; 
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075); 
} 

#opleiding { 
    width: 50.8%; 
} 

input[type="text"], input[type="date"], input[type="email"]{ 
    height: 20px; 
} 

select{ 
    height:29px; 
} 

.special p { 
    display: inline-block; 
    padding: 5px; 
    width: 32%; 
    font-weight: 800; 
} 

.special label { 
    width: 10%; 
    font-weight: 400; 
    display: inline-block; 
} 

#checkPermission { 
    font-family: Calibri; 
    font-weight:normal; 
    font-size: 16px; 
    display: inline-block; 
} 

.permission label { 

} 

input[type="checkbox"]{ 
    width: 20px; 
} 

input:focus { 
    border :1px solid blue; 
} 

input[type="button"] { 
    color: #fff; 
    background-color: #428bca; 
    border-color: #357ebd; 
    display: inline-block; 
    padding: 6px 12px; 
    margin-bottom: 0; 
    font-size: 14px; 
    font-weight: 400; 
    line-height: 1.42857143; 
    text-align: center; 
    white-space: nowrap; 
    vertical-align: middle; 
    cursor: pointer; 
    -webkit-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
    background-image: none; 
    border: 1px solid transparent; 
    border-radius: 4px; 
} 

#required { 
    color: #ff4444; 
} 
</style> 

的VerwerkForm功能:

function verwerkForm(e){ 
    //check of alle input correct is 
    var statusObject = checkInput(e); 
    if(!statusObject.inOrde){ 
    Logger.log("serversidecheck mislukt"); 
    return false; 
//  throw Error("De input is niet correct. Volgende fouten werden gevonden: " + statusObject.foutboodschappen); 
    } 

    //sla de files in variabelen op en stel direct ook hun naam correct in 
    var fileBlobP = doeSetName(e, e.passport, "_passport"); 
    var fileBlobPic = doeSetName(e, e.pic, "_passport_in_color"); 

    //creating files 
    var docPass = DocsList.getFolderById(docP).createFile(fileBlobP); 
    var docColorPass = DocsList.getFolderById(docPic).createFile(fileBlobPic); 

    //maak gegevens om toe te voegen klaar, open dan de spreadsheet en voeg de rij met gegevens toe 
    var rijGegevens = [e.voorvoegsel, e.voornaam, e.naam, e.geboorteDatum, e.nationaliteit, e.stad, e.land, e.opleiding, e.gsm, e.email, docPass.getUrl(), docColorPass.getUrl(), new Date()]; 
    SpreadsheetApp.openById(idSpreadsheet).getActiveSheet().appendRow(rijGegevens); 
} 

解決方案 錯誤竟然是因爲我忘了,包括在我的進程形式方法的成功案例return語句。最後一個簡單的「返回正常」足以緩解這個問題。

+0

請張貼您的gs文件。 (需要顯示'verwerkForm()'。) – Mogsdad

+0

編輯verwerkForm –

回答

4

氣體不能傳遞的DIV,你需要在形式送,要麼使用$("#form")[0]或調整你的HTML,使得按鈕父的形式,也可以在它上面的表,但沒有資料覈實。

+0

以上回復(節假日)道歉,但是這不起作用。我試着按照你的建議調整表單的選擇器,但仍然是同樣的錯誤信息。 –

+0

那麼,你做錯了那麼,因爲我剛剛複製了你的整個代碼(甚至CSS什麼都不會改變,不應該在你的問題中),並添加了include/doGet函數(後者與NATIVE模式)將this.parentNode轉換爲google.script.run.withSuccessHandler(工作).verwerkForm($(「#form」)[0]);它工作正常。另外在一個側面說明,不要min Jquery,它有正常jquery沒有的Caja的一些麻煩。 – Kriggs

+0

無法編輯以前的評論,以下是工作代碼:https://script.google.com/d/1qS4JxDI3JBCyG3Bn9HiREP4c_vKggAY4AaLSZwZ7ftT-KNse0mnO7KEu/edit?usp=sharing – Kriggs

相關問題