Good day everyone!
I'd like to have a function similiar to VBA's intersect
in Google Sheets Script. Is there a nifty way to do this? The function must return:
RangeIntersect(R1, R2) = true
if R1 has common cells with R2,RangeIntersect(R1, R2) = false
if R1 has no common cell with R2
Thank you in advance.
Speed test
I want the function to work as fast as possible. That's because it would be used in loops inside onEdit
function. If you like, test provided function with this script:
function speedtest () {
var sheet;
sheet = SpreadsheetApp.getActiveSheet();
var rr1 = ['A1:C16', 'B2:B88', 'D1:D8', 'E1:E17', 'A18:B51', 'A13:A14', 'A17:C17'];
var r1, r2;
r1 = sheet.getRange(rr1[0]);
var rr2 = [];
// define some ranges
for (var x = 0; x < 30; x++) {
for (var i = 0; i < rr1.length; i++) {
r2 = sheet.getRange(rr1[i]);
rr2.push(r2);
}
}
var C;
var start, end, time;
// timer start
for (var t = 0; t < 10; t++) {
start = new Date().getTime();
for (var f = 0; f < rr2.length; f++) {
C = RangeIntersect(r1, rr2[f]);
}
end = new Date().getTime();
time = end - start;
Logger.log('Execution time = ' + time);
}
}