谷歌应用脚​​本,通过(两个)2"变量"或"数组"从code.gs到index.html / Javascript

时间:2016-06-22 07:20:35

标签: javascript arrays google-apps-script

我需要将 Code.gs 中的2个“变量”或“数组”传递到我的 index.html / javascript。 2“变量”是我的工作表的值和单元格的背景颜色。 如果我只传递1个变量(waardes或kleuren),则该函数可以正常工作,如果我尝试同时传递它们,我只会在“return waardes,kleuren”中获得最后一个变量。

// 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
    }
}

1 个答案:

答案 0 :(得分:2)

与基本编程概念一样,大多数编程语言只返回函数中的一个值。阅读这篇文章"Why do most programming languages only return a single value from a function?"

因此,您无法从javascript中的函数返回多个变量中的多个值。

该怎么做?

您可以返回一个集合,即一个包含函数中多个值的对象或数组。

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}; 
}

然后获取index.html中的值

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

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

你也可以返回一个数组而不是像这样的对象:

在code.gs

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

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