javascript - 如何将数组转换为 Google 表格的矩阵

标签 javascript arrays object google-apps-script

您好,我有一个数组,我需要将其转换为二维数组,以便我可以将数组值设置为 google 表格文档。

本质上,我需要将数组 [a,b,c,d,e,f] 转换为矩阵 [["a"],["b"],["c"],["d "]、["e"]、["f"]]。我尝试使用 for 循环将 [\"+ element +\"] 推到每个元素周围。但是,我在运行脚本时仍然收到错误消息。 “无法将 Array 转换为 Object[][]。”

请帮忙!

// function pastValues should past 6 columns each comprised of a,b,c,d,e,f. Each letter is in its own cell.
function pasteValues() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var array = ["a","b","c","d","e","f"];
  for(var i=1; i < array.length; i++) {
    array = toMatrix(array);
    sheet1.getRange(2, i, 6, 1).setValues(array)
  }

}

// convert array [a,b,c,d,e,f] into matrix [[a],[b],[c],[d],[e],[f]] so it can be set into newShceduleSheet.
function toMatrix(arr){
var newMatrix = [];
  for (var i=0; i<arr.length; i++) {
  newMatrix.push("[\"" + arr[i] + "\"]");
  }
  return newMatrix;
}

最佳答案

这个修改怎么样?

修改点:

  • 在您的脚本中,"[\""+ arr[i] + "\"]" 变为字符串。
    • 您可以使用[arr[i]]
  • 您可以将 array = toMatrix(array); 放在 for 循环之外。

修改后的脚本:

// function pastValues should past 6 columns each comprised of a,b,c,d,e,f. Each letter is in its own cell.
function pasteValues() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var array = ["a","b","c","d","e","f"];
  array = toMatrix(array);
  for(var i=1; i < array.length; i++) {
    sheet1.getRange(2, i, 6, 1).setValues(array);
  }
}

// convert array [a,b,c,d,e,f] into matrix [[a],[b],[c],[d],[e],[f]] so it can be set into newShceduleSheet.
function toMatrix(arr){
  var newMatrix = [];
  for (var i=0; i<arr.length; i++) {
    newMatrix.push([arr[i]]);
  }
  return newMatrix;
}

其他模式:

您还可以使用 map() 转换 array

function pasteValues() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var array = ["a","b","c","d","e","f"];
  array = array.map(function(e){return [e]});
  for(var i=1; i < array.length; i++) {
    sheet1.getRange(2, i, 6, 1).setValues(array);
  }
}

如果我误解了你的问题,请告诉我。我想修改这个。

编辑:

我不确定这是否是您想要的。如果我的理解是正确的,那么这个呢?在此示例脚本中,您可以使用所需的数组。例如,您可以使用 ["a","b","c"]["a","b","c","d","e","f","g","h"]。该数组被转置,并从 A 列插入。您可以在 var n = array.length; 中设置副本数。默认是数组的长度。

function pasteValues() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var array = ["a","b","c","d","e","f"];
  array = array.map(function(e){return [e]});

  var n = array.length; // Please input the number of columns that you want to copy.
  for (var i = 1; i <= n; i++) {
    sheet1.getRange(2, i, array.length, array[0].length).setValues(array);
  }
}

关于javascript - 如何将数组转换为 Google 表格的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917016/

相关文章:

arrays - 仅将函数应用于Scala中列表或数组中的一个元素

javascript - Javascript 中的封装/数据隐藏?

javascript - 如何在 d3 中悬停时增加饼图的大小

javascript - 使用 xlsx/sheetjs 添加动态列

c++ - 为字符类型的字符串赋值

c - 段错误 11 和在 c 中创建/打印字符串数组时出现问题

C++:按值将对象传递给同一类的成员函数

java - 如何调用使用 BeanLocator 找到的对象上的方法

javascript - backbonejs如何在页面加载时调用函数

javascript - 固定标题 Div 的 CSS 问题