试试这个:
这将查找并列出所有命名范围、它们的位置和值。至少我的命名范围是这样的。
function findAllNamedRanges() {
var ss=SpreadsheetApp.getActive();
var nrA=ss.getNamedRanges();
var html="<style>th,td{border:1px solid black;}</style>";
for(var i=0;i<nrA.length;i++) {
html+=Utilities.formatString('Name: %s Range: %s Sheet: %s <br />',nrA[i].getName(),nrA[i].getRange().getA1Notation(),nrA[i].getRange().getSheet().getName());
var vA=nrA[i].getRange().getValues();
var row=nrA[i].getRange().getRow();
var col=nrA[i].getRange().getColumn();
if(vA.length>1) {
html+="<table><tr><th>Row</th><th>Col</th><th>Value</th></tr>";
for(var j=0;j<vA.length;j++) {
html+="<tr>";
for(var k=0;k<vA[j].length;k++) {
html+=Utilities.formatString('<td>%s</td><td>%s</td><td>%s</td>',row + j,col + k,vA[j][k]);
}
html+="</tr>"
}
html+='</table><br /><hr><br />';
}
if(vA.length==1) {
html+=Utilities.formatString('row: %s, col: %s value: %s <br /><hr>',row,col,vA[0][0]);
}
if(!vA) {
html+="undefined <br /><hr>";
}
}
Logger.log(html);
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Named Ranges");
}
此版本还删除了任何单元格中带有“#REF”的命名范围。
function findAllNamedRanges() {
var ss=SpreadsheetApp.getActive();
var nrA=ss.getNamedRanges();
var html="<style>th,td{border:1px solid black;}</style>";
for(var i=0;i<nrA.length;i++) {
html+=Utilities.formatString('Name: %s Range: %s Sheet: %s <br />',nrA[i].getName(),nrA[i].getRange().getA1Notation(),nrA[i].getRange().getSheet().getName());
var vA=nrA[i].getRange().getValues();
var row=nrA[i].getRange().getRow();
var col=nrA[i].getRange().getColumn();
if(vA.length>1) {
html+="<table><tr><th>Row</th><th>Col</th><th>Value</th><th>Value</th></tr>";
for(var j=0;j<vA.length;j++) {
html+="<tr>";
for(var k=0;k<vA[j].length;k++) {
html+=Utilities.formatString('<td>%s</td><td>%s</td><td>%s</td><td>%s</td>',row + j,col + k,vA[j][k],(vA[j][k]=="#REF")?"Removed":"OK");
if(vA[j][k]=="#REF") {
nrA[i].remove;
continue;
}
}
html+="</tr>"
}
html+='</table><br /><hr><br />';
}
if(vA.length==1) {
html+=Utilities.formatString('row: %s, col: %s value: %s Status: %s<br /><hr>',row,col,vA[0][0],(vA[0][0]=="#REF")?"Removed":"OK");
if(vA[0][0]=="#REF") {
nrA[i].remove();
continue;
}
}
if(!vA) {
html+="undefined <br /><hr>";
}
}
Logger.log(html);
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Named Ranges");
}