2

Googleシートサイドバー内のHTML iframeにGoogleスプレッドシートのすべてのエディタを表示しようとしています。以下のコードでわかるように、私は結果をロガーに表示します。それはそこで動作し、私に編集者のリストを示します。しかし、結果をgoogle.script.runを使ってHTMLファイルに渡すと、途中で "迷子になる"ようです。私はエラーを受け取りません。サイドバーには単に「ヌル」リストしかありません。クライアントsuccessHandlerがnullになりますが、サーバーログに結果が表示されます

私は.GSに次のコードを持っている:

function myFunction() { 
    var html = HtmlService.createHtmlOutputFromFile('form1'); 
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp. 
     .showSidebar(html); 
} 

function editores() { 
    var editors = SpreadsheetApp.getActiveSpreadsheet().getEditors(); 
    for (var i = 0; i < editors.length; i++) { 
    var editor = editors[i]; 
    Logger.log(editor) 
    } 
    return editors;  
} 

そしてHTMLでこのコード:

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script> 
    function listEditors(editors) { 
     for (var i = 0; i < editors.length; i++) { 
     var eltag = document.getElementById('edit').innerHTML; 
     var edit = editors[i]; 
     document.getElementById('edit').innerHTML = eltag+'<br/>'+edit; 
     } 
    } 

    google.script.run.withSuccessHandler(listEditors).editores(); 
    </script> 
    </head> 
    <body> 

    <p id='edit'></p> 
    </body> 
</html> 

私はmyFunction()を実行すると、それは「ヌル」のリストを示すサイドバーを開くに。しかし、スクリプトコンソールでLoggerを開くと、エディタのリストが表示されます。データが途中で "失われている"ようです。

+0

getEditorsは私のために今は動作しませんが、あなたのコードは完全にうまくいきます.JavaScriptコンソールにエラーが表示されますか? –

+0

エラーなし、サイドバーの「ヌル」リスト –

答えて

2

は、Google AppsスクリプトUser objectsの配列を渡している、とだけの単純なオブジェクトは、クライアント*に戻すことができるので、結果はnullです。

この問題を解決する1つの方法は、文字列として、各ユーザーのアドレスを取得するためにgetEmail()を使用し、それらの配列を返すことです:*

function editores() { 
    var editors = SpreadsheetApp.getActiveSpreadsheet().getEditors(); 
    var editorStrArray = []; 
    for (var i = 0; i < editors.length; i++) { 
    var editor = editors[i]; 
    Logger.log(editor); 
    editorStrArray.push(editor.getEmail()) 
    } 
    return editorStrArray;  
} 

google.script.runためのドキュメントがルールと言います戻り値(successHandlersへの)は、サーバー側関数のパラメーターと同じです。具体的には、次のとおりです。

有効なパラメーターはJavaScript Number、Boolean、String、またはnullなどのプリミティブ、プリミティブ、オブジェクト、および配列で構成されるJavaScriptオブジェクトおよび配列が含まれます。

+0

ありがとう@Mogsdad!出来た –