通过Google Apps脚本将多维数组解析为Google表格

时间:2016-04-10 14:50:31

标签: google-apps-script

我在客户端HTML上有这个代码,用于将html表导出到数组中并将其提交给gapi。

function exportGsheet() {
    var myTableArray = [];
    $("#table tr").each(function() {
    var arrayOfThisRow = [];
    var tableData = $(this).find('td');
    if (tableData.length > 0) {
    tableData.each(function() { arrayOfThisRow.push($(this).text()); });
    myTableArray.push(arrayOfThisRow);
    }
    });

    var request = {
        'function': 'setData',
        'parameters': myTableArray,
        'devMode': true // Optional.
    };

    var op = gapi.client.request({
        'root': 'https://script.googleapis.com',
        'path': 'v1/scripts/' + SCRIPT_ID + ':run',
        'method': 'POST',
        'body': request
    });

    op.execute();
    window.open(gsheet);
//  alert(myTableArray)
}

此代码在Google Apps脚本中(作为API可执行文件发布)用于解析此数组并填充google表格中的单元格。

    function setData(e) {
      var doc = SpreadsheetApp.openById(DOC_ID);
      var sheet = doc.getSheetByName(SHEET_NAME);
      var row = [];
      for(var i = 0; i < e.length; i++) {
        row.push(e[i]);
        }
     sheet.getRange(5, 2, 1, row.length).setValues([row]);
}

数组看起来像这样

[["John","10","Lakeview","12345"],["Jill","8‌​","Tramble","12346"],["James","9","Paramount","12348"]]

这里的问题是谷歌应用程序脚本只填充第一行并忽略其余的数组。意味着,它将["John","10","Lakeview","12345"]数组填充到第一行并忽略所有其他数组。 我在客户端javascript中启用了console.log(),我可以看到请求体包含传递给gapi时的所有数组。下面是上面'op'变量的console.log()。

body : "{"function":"setData","parameters":[["John","10","Lakeview","12345"],["Jill","8‌​","Tramble","12346"],["James","9","Paramount","12348"]],"devMode":true}"

尝试调试几个小时。任何人都可以帮忙。

1 个答案:

答案 0 :(得分:0)

第三个参数:

Select
  employees.Id as EmployeeID,
  employees.Name as EmployeeName,
  supervisors.Id as SupervisorId,
  supervisors.Name as SupervisorName # ???
From
  employees Left Join
  supervisors
    On employees.SupervisorId = supervisors.Id

是行数。你把它设置为一个:

getRange(start row, start column, number of Rows, number of columns)

需要像这样设置:

sheet.getRange(5, 2, 1, row.length).setValues([row])

最后一个参数应该引用内部数组长度。

现在名为getRange(5, 2, data.length, data[0].length) 的数组,我会更改为row

OuterArray