【发布时间】:2020-01-04 19:06:20
【问题描述】:
我正在尝试比较两个不同工作表上两列的值(工作表 A 上的 G 列和工作表 B 上的 J 列)。对于每个匹配项,我希望脚本将值从工作表 A 的 N 列复制到工作表 B 的 K 列。
我花了好几天的时间试图弄清楚,但似乎无法正确解决。这是我尝试过的一些代码 -
function CopyTCEmailImportV6() {
// gets spreadsheet A and the range of data
var ssA = SpreadsheetApp.getActiveSpreadsheet();
var sheetA = ssA.getSheetByName('(Test) E-mail List');
var dataA = sheetA.getRange('G:N').getValues();
// gets spreadsheet B and the range of data
var sheetB = ssA.getSheetByName('Ticket Counts (Master)');
var dataB = sheetB.getRange('J:K').getValues();
// loops through column A of spreadsheet A & B and compares
for(var i = 0; i < sheetA.getLastRow(); i++){
if (dataA[i][0] === dataB[i][0]){
values.push([dataA[i][7]]);
} else {
values.push([""]);
}
}
sheetB.getRange(1, 11, values.length,
values[0].length).setValues(values);
};
非常感谢任何帮助!
这是完成的代码,以防万一它可以帮助某人解决问题 -
function CopyTCEmailImportV6() {
// gets spreadsheet A and the range of data
var ssA = SpreadsheetApp.getActiveSpreadsheet();
var sheetA = ssA.getSheetByName('(Test) E-mail List');
var dataAa = sheetA.getRange('G2:N' + sheetA.getLastRow()).getValues(); // Modified
var dataA = dataAa.reduce(function(ar, n) {
if (n[7]) ar.push(n)
return ar;
}, []);
// gets spreadsheet B and the range of data
var sheetB = ssA.getSheetByName('Ticket Counts (Master)');
var dataB = sheetB.getRange('J2:K' + sheetB.getLastRow()).getValues(); // Modified
// Below script was also added.
var obj = dataA.reduce(function(o, e) {
o[e[0]] = e[7];
return o;
}, {})
var values = dataB.map(function(e, i) {return e[0] in obj ? [obj[e[0]]] : [e[1]]});
sheetB.getRange(2, 11, values.length, values[0].length).setValues(values);
};
【问题讨论】:
标签: google-apps-script google-sheets