将多列中的信息合并到不同工作表上的一列中

问题描述 投票:0回答:1

如何将填充到一张纸上不同列的数据转移到另一张纸上,但在同一列中?我尝试运行我的代码,但是收到一条错误,提示“异常:参数 (number[]) 与 SpreadsheetApp.Range.setValues.dewarData 的方法签名不匹配”(关于代码的最后一行) )。我在下面提供了部分代码:

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Form Response Data')
const sheet2 = ss.getSheetByName('Data Overview');
let [vb] = sheet1.getDataRange().getDisplayValues().map(([a,b,c,d,e,f,au,az,ba,bb,bc,bd,be])=> 
[`${az} ${ba} ${bb} ${bc}`]);
sheet2.getRange(3,10,vb.length,vb[0].length).setValues(vb); 
arrays sorting google-apps-script google-sheets
1个回答
0
投票

在您的显示脚本中,

vb
${az} ${ba} ${bb} ${bc}
let [vb] = sheet1.getDataRange().getDisplayValues().map(([a,b,c,d,e,f,au,az,ba,bb,bc,bd,be])=>  [
]);
是类似于
["## ## ## ##"]
的值。并且,
values
中的
setValues(values)
必须是二维数组。我认为这可能是您当前问题的原因。

但是,不幸的是,从你的问题来看,我无法理解你的预期结果。所以,在这个答案中,我想提出以下两种模式。

模式1:

如果只想放入输出数组的第一个元素,请按如下方式修改。

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Form Response Data')
const sheet2 = ss.getSheetByName('Data Overview');
let [vb] = sheet1.getDataRange().getDisplayValues().map(([a, b, c, d, e, f, au, az, ba, bb, bc, bd, be]) => [`${az} ${ba} ${bb} ${bc}`]);
sheet2.getRange(3, 10).setValue(vb[0]);

模式2:

如果要放入输出数组的所有元素,请修改如下。

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Form Response Data')
const sheet2 = ss.getSheetByName('Data Overview');
let vb = sheet1.getDataRange().getDisplayValues().map(([a, b, c, d, e, f, au, az, ba, bb, bc, bd, be]) => [`${az} ${ba} ${bb} ${bc}`]);
sheet2.getRange(3, 10, vb.length).setValues(vb);
© www.soinside.com 2019 - 2024. All rights reserved.