Google apps script 使用字符串作为参考的数据范围(动态图纸选择器)

Google apps script 使用字符串作为参考的数据范围(动态图纸选择器),google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想一次从一张纸中提取信息,这取决于某个单元格中存在的内容(最好是从下拉列表中),比如A1 在A1下拉列表中,我想要当前工作簿+数据范围内的工作表名称(例如A1:B10) 在A1=Sheet2 A1:B10中,这是一个完整的示例(作为字符串) 例如,公式为A3 如果它是一个正常的参考,它会像这样 =总和('Sheet2'!A1:B10) 我要找的是这样的 =总和(A1) 但我可以想象它实际上看起来更像这样 =总和(“A1”) 或者如果这是一个查询,更符合 =查询(“A1”,“选择A,B”)粗略语

我想一次从一张纸中提取信息,这取决于某个单元格中存在的内容(最好是从下拉列表中),比如A1

在A1下拉列表中,我想要当前工作簿+数据范围内的工作表名称(例如A1:B10)

在A1=Sheet2 A1:B10中,这是一个完整的示例(作为字符串)

例如,公式为A3

如果它是一个正常的参考,它会像这样 =总和('Sheet2'!A1:B10) 我要找的是这样的 =总和(A1) 但我可以想象它实际上看起来更像这样 =总和(“A1”) 或者如果这是一个查询,更符合 =查询(“A1”,“选择A,B”)粗略语法

希望这是有意义的,有人可以帮助,提前感谢


Ps如果没有脚本就做不到,那很好,只是想知道你可以试试下面的代码

//This will add all the sheet Names and the range in the cell A1 as dropdown 
  function addDropDown(){
      var cell= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1");
      var sheet= [];
      var allsheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
        for( i = 0; i < allsheets.length; ++i){
           if(allsheets[i].getName().toString().toLowerCase().indexOf("report")!=-1){
             sheet.push(allsheets[i].getName()+"!"+allsheets[i].getDataRange().getA1Notation());
           }
        }
      var rule = SpreadsheetApp.newDataValidation().requireValueInList(sheet).build();
      cell.setDataValidation(rule);
    }
//这将在单元格A1中添加所有图纸名称和范围作为下拉列表
函数addDropDown(){
var cell=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(“A1”);
var表=[];
var allsheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
对于(i=0;i

唯一的问题是您不能直接使用
=sum(A1)
,但您可以这样做
=sum(INDIRECT(A1))
=QUERY(INDIRECT(A1),“选择A,B”)

,以使下拉列表中的工作表更具自定义性,我喜欢将其限制为包含单词report的工作表。因此,与其从工作表列表中抓取“sheet1”、“sheet1”、“report123”、“report456”,它只会抓取报告页面,我该怎么做呢?谢谢你能用indexOf实现这一点…我已经修改了代码