Javascript 谷歌应用程序脚本。检查Range1是否与Range2相交

Javascript 谷歌应用程序脚本。检查Range1是否与Range2相交,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,大家好 我想要一个类似于Google Sheets脚本中VBA的intersect的函数。有什么好办法吗?函数必须返回: RangeIntersect(R1,R2)=true如果R1与R2有公共单元格 RangeIntersect(R1,R2)=false如果R1与R2没有公共单元格 先谢谢你 速度测试 我希望函数能尽快工作。这是因为它将在onEdit函数内的循环中使用。如果愿意,请使用以下脚本测试提供的函数: function speedtest () { var sheet;

大家好

我想要一个类似于Google Sheets脚本中VBA的
intersect
的函数。有什么好办法吗?函数必须返回:

  • RangeIntersect(R1,R2)=true
    如果R1与R2有公共单元格
  • RangeIntersect(R1,R2)=false
    如果R1与R2没有公共单元格
先谢谢你

速度测试

我希望函数能尽快工作。这是因为它将在
onEdit
函数内的循环中使用。如果愿意,请使用以下脚本测试提供的函数:

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);    

    }            
}
function RangeIntersect(R1, R2) {

  var LR1 = R1.getLastRow();
  var Ro2 = R2.getRow();
  if (LR1 < Ro2) return false;
  
  
  var LR2 = R2.getLastRow();
  var Ro1 = R1.getRow();
  if (LR2 < Ro1) return false;
  
  var LC1 = R1.getLastColumn();
  var C2 = R2.getColumn();
  if (LC1 < C2) return false;
  
  var LC2 = R2.getLastColumn();
  var C1 = R1.getColumn();
  if (LC2 < C1) return false;

  return true;

}
功能速度测试(){
var表;
sheet=SpreadsheetApp.getActiveSheet();
变量rr1=['A1:C16','B2:B88','D1:D8','E1:E17','A18:B51','A13:A14','A17:C17'];
变量r1,r2;
r1=sheet.getRange(rr1[0]);
风险值rr2=[];
//定义一些范围
对于(变量x=0;x<30;x++){
对于(变量i=0;i