嗨我有一个我需要转换成二维数组的数组,所以我可以将数组值设置为google工作表文档。
本质上,我需要将数组[a,b,c,d,e,f]转换为矩阵[[" a"],[" b"] [" C"],[" d"],[" E"],[" F"]]。我尝试过使用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"];
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;
}
答案 0 :(得分:3)
这次修改怎么样?
"[\"" + 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;
}
您还可以使用array
转换map()
。
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);
}
}