2017-09-20 11 views
0

現在、Googleシートの値の配列をHtmlServiceに渡そうとしています。ここでユーザーはオプションを選択し、最終的に.gsに戻しますスクリプト。私は、参照としてこれらの2つのリンクを使用している: 1. Google Documentation 2. Stack Overflow exampleHtmlService:google.script.runがgs関数を認識しない

コードを実行しているとき、私は私のコンソールを見て、このエラーに気づいた: VM3051:4 Uncaught TypeError: google.script.run.withSuccessHandler(...).getVersionArray is not a function getVersionArray()が正しく渡されていないことが表示されます。そのgoogle.script.runコールの残りの部分からこの機能を削除すると、エラーが消えます。

また、リンク2つにつき、そのコードをテンプレートで試したところ、ポップアップするウィンドウがないので、Googleドキュメンテーションのリンクから出発点としてHtmlOutputの例を使用しています。私はSandboxMode宣言の有無にかかわらずコードを試しました。

GSコード:

function bugPieChart() { 
    getVersionArray(); 
    openDialog(); 

function getVersionArray() { 

    var ss = SpreadsheetApp.getActive(); 
    var valuesR = ss.getSheetByName("report").getRange('R1:R').getValues(); 
    var valuesS = ss.getSheetByName("report").getRange('S1:S').getValues(); 

    var versionRSArray = []; 

    for (var i = 0; i < valuesR.length; i++) { 
    versionRSArray.push(valuesR[i][0]); 
    } 

    for (var i = 0; i < valuesS.length; i++) { 
    versionRSArray.push(valuesS[i][0]); 
    } 

    versionRSArray.sort(); 

    var uniqueArray = []; 

    uniqueArray.push(versionRSArray[0]); 

    for (var i in versionRSArray) { 
    if((uniqueArray[uniqueArray.length-1]!=versionRSArray[i]) && (versionRSArray[i] !== "")) { 
     uniqueArray.push(versionRSArray[i]); 
    } 
    } 
    return uniqueArray; 
} 

function openDialog() {  
    var html = HtmlService.createHtmlOutputFromFile('index'); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title'); 
    var htmlOutput = html.setSandboxMode(HtmlService.SandboxMode.NATIVE); 
    return htmlOutput; 
} 

} 

のindex.html:

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    <script> 
     $(function() { 
     google.script.run.withSuccessHandler(buildOptionsList) 
      .getVersionArray(); 
     }); 
     function buildOptionsList(uniqueArray) { 
     var list = $('#optionList'); 
     list.empty(); 
     for (var i = 0; i < uniqueArray.length; i++) { 
      list.append('<option value="' + uniqueArray[i].toLowerCase() + '">' + uniqueArray[i] + '</option>'); 
     } 
     }  
    </script> 
    </head> 
    <body> 
    <select id="optionList"> 
     <option>Loading...</option>  
    </select> 
    <input type="button" value="Close" onclick="google.script.host.close()" /> 
    </body> 
</html> 

答えて

1

私はあなたはそれ以上の機能上の閉じ括弧が欠落だと思います。

function bugPieChart() { 
    getVersionArray(); 
    openDialog(); 
} 

function getVersionArray() { 

    var ss = SpreadsheetApp.getActive(); 
    var valuesR = ss.getSheetByName("report").getRange('R1:R').getValues(); 
    var valuesS = ss.getSheetByName("report").getRange('S1:S').getValues(); 

    var versionRSArray = []; 

    for (var i = 0; i < valuesR.length; i++) { 
    versionRSArray.push(valuesR[i][0]); 
    } 

    for (var i = 0; i < valuesS.length; i++) { 
    versionRSArray.push(valuesS[i][0]); 
    } 

    versionRSArray.sort(); 

    var uniqueArray = []; 

    uniqueArray.push(versionRSArray[0]); 

    for (var i in versionRSArray) { 
    if((uniqueArray[uniqueArray.length-1]!=versionRSArray[i]) && (versionRSArray[i] !== "")) { 
     uniqueArray.push(versionRSArray[i]); 
    } 
    } 
    return uniqueArray; 
} 

function openDialog() {  
    var html = HtmlService.createHtmlOutputFromFile('index'); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title'); 
    var htmlOutput = html.setSandboxMode(HtmlService.SandboxMode.NATIVE); 
    return htmlOutput; 
} 
+0

ああ大丈夫です。まだまだ学べます。私はその括弧を紛失していなかったが、それは一番下にあった。私はbugPieChart()関数の中に2つの他の関数を持っていました。 3つの機能が別々になるように、ブラケットを上に移動しました。回答ありがとうございました。 –

関連する問題