2016-08-27 15 views
2

私はこのすべてをかなり新しくしていますが、Googleスプレッドシートから名前を直接入力してApps Script Web App HTMLドロップダウンフォームのエントリを作成しようとしています。今まで私はスプレッドシートの列Aから名前の配列を返すことができました。また、JSの "Populates Form"セクションは、HTMLフォームを正常に生成します。GoogleスプレッドからHTMLフォームにデータを入力

私の質問はどのように私は2つを接続するのですか?私はJSの後半部分のハードコードされた配列を関数getColleagueList()で置き換えようとしましたが、関数を削除して変数を残すだけで、フォームはまだポピュレートされません。私はその単純な解決策のように感じるが、何をすべきか分からない。前もって感謝します。

<!DOCTYPE html> 
<html> 
<head> 
</head> 
    <body> 


    <select id="selectColleague"> 
    <option disabled selected value=""> 
     Reviewer's Name 
    </option> 
    </select> 

    <script type="text/javascript"> 

    //Gets Names 
    function getColleagueList() { 
    var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Roster Import'); 
    var range = s1.getRange(2, 1,s1.getLastRow()-1, 1).getValues(); 
    return range; 
    } 


    //Populates Form 
    var select = document.getElementById("selectColleague"); 
    var options = ["1", "2", "3", "4", "5"]; 
    for(var i = 0; i < options.length; i++) { 
     var opt = options[i]; 
     var el = document.createElement("option"); 
     el.textContent = opt; 
     el.value = opt; 
     select.appendChild(el); 
    } 
</script> 
+0

あなたのHTMLはGoogle以外のウェブサイトにありますか? Googleスプレッドシートのサイドバーですか? Apps Script Web App? Googleサイトですか? –

+0

@Sandy_Good Apps Script Web App –

答えて

4

getColleList()はサーバー側の関数である必要があります。 Code.gsファイルに置くことができます。そして、次のように、JavaScriptからサーバー側の関数を呼び出す: あなたがここで多くを学ぶことができます。https://developers.google.com/apps-script/guides/html/communication

<script> 
      function onSuccess(values) { 
      var select = document.getElementById("selectColleague"); 
      var options = values[0]; //Two dimensional array 
      for(var i = 0; i < options.length; i++) { 
       var opt = options[i]; 
       var el = document.createElement("option"); 
       el.textContent = opt; 
       el.value = opt; 
       select.appendChild(el); 
      } 
      } 

      google.script.run.withSuccessHandler(onSuccess) 
       .getColleagueList(); 
</script> 
+0

@Hari_Das回答とドキュメントをありがとう。フォームのドロップダウンでスプレッドシートのファーストネームが表示されるが、配列内のすべての名前を表示するログにもかかわらず、すべての名前をループしていないようだ。すべての名前を引っ張ってもらうための助けをいただければ幸いです。ここには[スプレッドシート](https://docs.google.com/spreadsheets/d/1_gbVPyAIXHm4NktW793-3r7DWoKF2S1m19J5rjJ26-A/edit#gid=0)があり、Appsスクリプトが含まれています。 –

1

@HariDasは、バックエンド.GSコードを持つ偉大な答えを与えているし、すべて正常に動作しています。

var options = values[0]; 
    //change it to: 
    var options = values; 

これは今の配列をループし、すべての結果を与えるが、ここで見られますよう: Web App

希望に役立つこと あなたのWebアプリケーションコードは、それがほんの少し変更が行われなければならも結構です:) 幸運!

+0

ありがとうございました!それはうまくいった。 –

関連する問題