2016-06-22 1 views
1

Ich muss 2 "Variablen" oder "Arrays" von meinem Code.gs an meine index.html/javascript. Die 2 "Variablen" sind die Werte meines Blattes und die Hintergrundfarbe der Zellen. Wenn ich nur 1 Variable (waardes oder kleuren) passiere, funktioniert die Funktion, wenn ich versuche, beide zu übergeben, bekomme ich nur die letzte Variable in den "return waardes, kleuren".Google Apps Skript, Pass (zwei) 2 "Variablen" oder "Array" von code.gs zu index.html/Javascript

// code.gs

function getSheetData(){ 
    var ss = spreadsheetApp.openById("1EpOCr_wjeYhn2YsQjRpAaUtaJNKv_4Rf81vnG59EvPA").getSheetByName("sheet"); 
    var waardes, kleuren; 
    waardes = ss.getDataRange().getValues(); 
    kleuren = ss.getDataRange().getBackgrounds(); 

    return waardes, kleuren; 
} 

// index.html/javascript

function functionShowSheet() { 
    google.script.run.withSuccessHandler(showValuesandColors).getSheetData(); 

    function showValuesandColors (waardes, kleuren) { 
     alert(waardes); 
     alert(waardes[0][0]); 
     // do something with the values and colors 
    } 
} 
+0

Der Komma-Operator gibt immer ein Ergebnis zurück: den Wert des letzten Unterausdrucks. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator – HardScale

Antwort

2

Wie bei dem grundlegenden Programmierkonzept, kehren die meisten Programmiersprachen nur einen Wert aus der Funktion. Lesen Sie diesen Artikel "Why do most programming languages only return a single value from a function?"

So können Sie nicht mehrere Werte in mehreren Variablen aus einer Funktion in Javascript zurückgeben.

Was dann zu tun?

Sie können eine Sammlung, d. H. Ein Objekt oder ein Array, das mehrere Werte enthält, von einer Funktion zurückgeben.

function getSheetData(){ 
    var ss = spreadsheetApp.openById("1EpOCr_wjeYhn2YsQjRpAaUtaJNKv_4Rf81vnG59EvPA").getSheetByName("sheet"); 
    var waardes, kleuren; 
    waardes = ss.getDataRange().getValues(); 
    kleuren = ss.getDataRange().getBackgrounds(); 

    return {waardes: waardes, kleuren: kleuren}; 
} 

Und Sie erhalten dann die Werte in index.html

function showSheet(){ 
    google.script.run.withSuccessHandler(showValuesandColors).getSheetData(); 
} 

function showValuesandColors (myObj) { 
    var waardes = myObj.waardes; 
    var kleuren = myObj.kleuren; 
} 

Sie können auch anstelle eines Objekts wie folgt ein Array zurück:

in code.gs

function getSheetData(){ 
    .... 
    var resArr = [waardes, kleuren]; 
    return resArr; 
} 

in index.html

function showValuesandColors (myArr) { 
    var waardes = myArr[0]; 
    var kleuren = myArr[1]; 
} 
Verwandte Themen