2017-09-13 5 views
1

ではありません、私は次のクライアントサイドアプリケーションスクリプトのhtmlページがあります。アプリスクリプト:完成したスクリプトが、返された値がサポートされ、戻り値の型

<body> 

    <form id="myForm" onsubmit="handleFormSubmit(this)"> 


    <div> 
    <label for="optionList">Click me</label> 
    <select id="optionList" name="email"> 
    <option>Loading...</option>  
    </select> 

    </div> 


    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> 



    </script> 
    <script> 
    // This code in this function runs when the page is loaded. 
    $(function() { 
    google.script.run.withSuccessHandler(buildOptionList) 
     .getAllOptions(); 

    }); 


    function buildOptionList(options) { 
    var list = $('#optionList'); 


    list.empty(); 
    for (var i = 0; i < options.length; i++) { 
    console.log(options[i]); 
     list.append('<option value="' + options[i].toLowerCase() + '">' + options[i] + '</option>'); 
    //  list.append('<option value="' + options[i]["email"] + '">' '</option>'); 


    } 
    }; 


    </script> 


    </body> 

を私のように、スプレッドシートのすべての行を介して送信しようとしていますクライアント側での選択ボックスを移入することを目標に

function getAllOptions() { 

     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var mainSheet = ss.getSheetByName("Main"); 
    var main_range = mainSheet.getDataRange();//THIS GETS EVERYTHING, I DON'T THINK IT CAN TAKE A SUBRANGE 
     objects = getRowsData(mainSheet, main_range,3); 


    output = []; 
     for (i in objects) { 
     var obj=objects[i] 
     output.push(obj); 

     } 

     Logger.log(output); 

    return output; 

    } 

を、しかし、私はタイトルのエラーを取得しています:JSは、使用して、サーバー側のスプレッドシートからのオブジェクト。サーバーからクライアント側にオブジェクトを送信するにはどうすればよいですか?

+1

スプレッドシートに日付が含まれていますか?これらは[script.run method](https://developers.google.com/apps-script/guides/html/reference/run)で戻り値としてサポートされていません。 (また、 '.getDataRange();'についてのあなたのコメントについては、サブレンジを取っていない、実際にはそうではありません、サブレンジが必要なら '.getRange(...)'を使用してください) – FTP

+0

ありがとう、日付、あなたは何をお勧めしますか? – user61629

+0

返す前に文字列に変換してください... – FTP

答えて

1

ここで私はそれをやっています。

Javascriptを:

$(function() { 
     $('#txt1').val(''); 
     google.script.run 
      .withSuccessHandler(updateSelect) 
      .getSelectOptions(); 
     }); 

function updateSelect(vA) 
{ 
    var select = document.getElementById("sel1"); 
    select.options.length = 0; 
    for(var i=0;i<vA.length;i++) 
    { 
    select.options[i] = new Option(vA[i],vA[i]); 
    } 
} 

Google Appsのスクリプト:

function getSelectOptions() 
{ 
    sortOptions(); 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName('Options'); 
    var rg=sh.getDataRange(); 
    var vA=rg.getValues(); 
    var options=[]; 
    for(var i=0;i<vA.length;i++) 
    { 
    options.push(vA[i][0]); 
    } 
    return vA; 
} 
+0

ありがとう、その例は本当に私を助けた! – user61629

+0

私のウェブサイト[ここ](https://sites.google.com/view/googlappsscript/dont-give-up-yet)にもっと簡単な例があります。 – Cooper

+0

ありがとう、私はそれをチェックアウトします。 – user61629

関連する問題