Я пытаюсь найти, находится ли диапазон в rangeList, и я увидел где-то что-то вроде выражения:
if ( myrange in myrangelist ) ...
Я пытался заставить это работать, но не могу.
Кто-нибудь знает, если возможно, и если да, то как?
Возможно, это поможет:
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; }