2016-06-16 49 views
0

私はgoogleシートの値に基づいて配列に値を設定するだけでなく、Webアプリケーションを作成する次のGoogleアプリケーションスクリプトを持っています。私のコードの一番上のセクションはテストされ、うまく動作します。GASスクリプトからhtmlファイルに配列を渡す、Global J.S.変数

function doGet() { 
    return HtmlService.createHtmlOutputFromFile('FormFile') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

function ChannelList() { 

var InfoSheetIterator = DriveApp.getFilesByName("InfoSheets"); 
var InfoSheetFile = InfoSheetIterator.next(); 
var InfoSheet = SpreadsheetApp.open(InfoSheetFile); 

var NumChannels = getLastRow('A'); 
var ChannelTwoDimArray = InfoSheet.getRange('A2:A'+String(NumChannels)).getValues(); 

return ChannelTwoDimArray; 
} 

その後、私はJavaScriptでグローバル変数として配列を宣言し、さらにこのコードの道を他の目的のためにその配列を使用しようとする過程でいます。私は空の配列を取得していると私はなぜわからない。任意のヒントをいただきました。

 <!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
<button type="button" onclick="tester()">Click Me!</button> 
<p id = "tester"></p> 
    <script> 
    //declaring global variables 
    window.onload = populateArrays; 

    function getChannelList(value) { 
    window.ChannelList = value; 
    } 




    function populateArrays() { 
    google.script.run.withSuccessHandler(getChannelList).ChannelList(); 

    } 

    function tester() { 
    document.getElementById("demo").innerHTML = window.ChannelList[0][0]; 
    } 

    </script> 
    </body> 
</html> 

編集:私は試してみました物事: - 複数のスクリプトタグを追加します。
- ChannelList値の出力にタイムアウトを設定する。 - グローバル変数 - ローカルストレージウィンドウ変数

ここには何かがありません。 ChannelListの値をgetChannelList()メソッドで出力するとうまくいきますが、そのスコープの外側にある値にアクセスしようとすると、そのような運がありません。

+0

を追加します。セッションに残っているブラウザのウィンドウオブジェクトにデータを配置することができます。 'window.ChannelList = value;'隠されたHTMLタグにコンテンツを保存することができます。ブラウザのローカルストレージにコンテンツを保存することができます。 [情報へのリンク - ローカルストレージ](http://www.w3schools.com/html/html5_webstorage.asp) –

+0

@SandyGoodは隠されたhtmlタグメソッドを除いてすべてを試みました。アプリケーションのスクリプト関数からWebアプリケーションのjavascriptグローバル変数に値を渡す標準的な方法はありますか? – IntegrateThis

+0

戻ってきた値をチェックし、 'getChannelList(value)'関数で受け取ったことはありますか? 'console.log( 'value:' + value)'ブラウザに到達したときに返される値は? –

答えて

0

は、私はオプションの少なくともいくつかを知っているwindow.onloadイベントに

<script> 
    window.onload = function() { 
    google.script.run.withSuccessHandler(getChannelList).ChannelList(); 
    console.log(window.ChannelList[0][0]); 

    }; 
</script> 
+0

残念ながら同じ問題 – IntegrateThis

+0

呼び出し元の関数の内部で、または呼び出しの直後に戻り値を取得することはできません。戻り値を取得し、成功ハンドラー関数から処理を続行する必要があります。 –

+0

それを考えていたはずです。 – IntegrateThis

関連する問題