2017-08-11 18 views
0

私はGoogleスプレッドシートを作成するために使用しているhtmlフォーム内のselectを更新した後に入力値を更新する方法を理解するのに役立つ必要があります。google.script.runを使用してhtmlフォームの入力をリセットする

コード:

function description(item){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('DATA'); 
    var cell = sheet.getRange('ITEM'); 

    cell.setFormula('=VLOOKUP(' + item + ';ITEMS!$C$2:$AE;29;FALSE)'); 

    return cell.getValue(); 

} 

はHTML:結果として

... 

<select id="SKU" onchange="update();"><?!= Drop_SKU();?></select> 

<input id="description" value="<?!= ss.getRange('ITEM').getDisplayValue();?>"> 

... 

<script> 

    window.update=function(){ 

     var ss = SpreadsheetApp.getActive(); 
     var parameter = document.getElementById('SKU').value 
     var newValue = google.script.run.description(parameter); 

     document.getElementById('description').value = newValue; 

    } 

、説明の機能は完全に実行されますが、入力 "説明" に未定義の値を設定するためにつながります。

私には何が欠けていますか?

私はあなたの助けを感謝します。前もって感謝します。

答えて

0

google.script.runは、サーバー側のコードが実行された後に何をすべきかを決定するために2つの部分があります .withSuccessHandler(successFunction) .withFailureHandler(failedFunction)

サーバ側の関数が何を実行していない場合エラーが発生すると、withSuccessHandlerで定義された関数が実行され、返された値がその関数に渡されます。エラーが発生すると、withFailureHandlerで定義された関数が実行されます。だから、HTMLのスクリプト部分は次のようになります。私は他の問題があるかどうかを確認するために、コードの残りの部分を見ていない

<script> 

     window.update=function(){ 
     var ss = SpreadsheetApp.getActive(); 
     var parameter = document.getElementById('SKU').value 
     google.script.run.withSuccessHandler(showNewValue).withFailureHandler(functionFailed).description(parameter); 
    } 

    function showNewValue(newValue){ 
     document.getElementById('description').value = newValue; 
    } 

    function functionFailed(error){ 
     document.getElementById('description').value = 'Error returned: ' + error; 
    } 
</script> 

注意を。

+0

ありがとうございました。しかし、申し訳ありませんが、このコードは何のアクションも提供していません。何も起こりません。どちらの「説明」もサーバー側で実行されません。 –

+0

いいえ、私はついに成功しました!入力ミスがありました。どうもありがとう!!! –

+0

申し訳ありません。できれば、入力ミスを修正するために投稿を編集し、他の人には正確です。 –

関連する問題