если диапазон в диапазоне - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь найти, находится ли диапазон в rangeList, и я увидел где-то что-то вроде выражения:

if ( myrange in myrangelist ) ...

Я пытался заставить это работать, но не могу.

Кто-нибудь знает, если возможно, и если да, то как?

1 Ответ

0 голосов
/ 11 января 2020

Возможно, это поможет:

function isInActiveRangeList(rgA1) {
  var rgA1=rgA1||'A1';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var list=sh.getActiveRangeList();
 var a1list=list.getRanges().map(function(rg){return rg.getA1Notation();});
  var idx=a1list.indexOf(rgA1);
  Logger.log(idx);
  Logger.log(a1list);
  if(idx>-1) {
    return true;
  }else{
    return false;
  }
}

function isContainedInActiveRangeList(rgA1) {
  var rgA1=rgA1||'B2';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var list=sh.getActiveRangeList();
  var rgA=list.getRanges();
  var fulllist=[];
  for(var i=0;i<rgA.length;i++) {
    var rvA=rgA[i].getValues();
    var row=rgA[i].getRow();
    var col=rgA[i].getColumn();
    for(var j=0;j<rvA.length;j++) {
      for(var k=0;k<rvA[j].length;k++) {
        fulllist.push(sh.getRange(row+j,col+k).getA1Notation());
      }
    }
  }
  var trg=sh.getRange(rgA1);
  var tvA=trg.getValues();
  var trow=trg.getRow();
  var tcol=trg.getColumn();
  var cObj={ins:[],outs:[],fully:true,partially:false};
  for(var i=0;i<tvA.length;i++) {
    for(var j=0;j<tvA[i].length;j++) {
      var a1=sh.getRange(trow+i,tcol+j).getA1Notation();
      if(fulllist.indexOf(a1)>=0) {
        cObj.ins.push(a1);
      }else{
        cObj.outs.push(a1);
      }
    }
  }
  if(cObj.ins.length>0) {
    cObj.partially=true;
  }
  if(cObj.outs.length>0) {
    cObj.fully=false;
  }
  Logger.log(cObj);
  Logger.log(fulllist);
  return (cObj.fully)?true:false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...