您好,我有一个数组,我需要将其转换为二维数组,以便我可以将数组值设置为 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/