指向其他工作簿中其他工作表的超链接的下拉列表

Drop-down list of hyperlinks to other sheets in other workbooks

通过这段代码

function onEdit(e) {
  if(e.source.getActiveSheet() && e.range.getRow() === 1 && e.range.getColumn() === 1) {
    e.source.getSheetByName(e.value).activate();
  }
}

function sheetnames() {
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )
  return out 
}

我可以通过下拉列表切换标签页。也就是说,如果我从下拉列表中 select 名称 'sheet 2',它会将我重定向到 sheet 2

我想知道是否可以修改此代码,以便当我 select 下拉列表中的某个选项时,它会将我带到另一项工作sheet(而不是标签)

我相信你的目标如下。

  • 当sheet“公式”上的单元格“D7”的下拉列表更改为Sucesso do Cliente时,您想打开https://docs.google.com/spreadsheets/d/1BbuJfPPOSdbvHZ5b8xVTMndeydNfslDhPLm9ftL1pLU/edit?usp=sharing

在这种情况下,下面的示例脚本怎么样?

示例脚本:

请将以下脚本复制粘贴到“In this worksheet:”的Spreadsheet脚本编辑器中。而且,please install OnEdit trigger to the function installedOnEdit。使用此脚本时,请将sheet“公式”中单元格“D7”的下拉列表更改为Sucesso do Cliente。这样,脚本就是运行.

function installedOnEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  if (sheet.getSheetName() != "Formulário" || range.getA1Notation() != "D7" || range.getValue() != "Sucesso do Cliente") return;
  const url = "https://docs.google.com/spreadsheets/d/1BbuJfPPOSdbvHZ5b8xVTMndeydNfslDhPLm9ftL1pLU/edit?usp=sharing";
  const html = `<script>window.open('${url}', '_blank');google.script.host.close();</script>`;
  SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutput(html), "sample");
}
  • 当您将 sheet“公式”中单元格“D7”的下拉列表更改为 Sucesso do Cliente 时,将打开一个对话框,[=12] 的 URL =] 由对话框的 Javascript 打开。

注:

  • 在此示例脚本中,打开了您期望的 URL。但是,1st Spreadsheet无法关闭。

参考:

合并 onEdit 函数

此功能允许您使用 A1 的数据验证跳转到同一电子表格中的其他工作表,以及使用 B1 的数据验证跳转到其他电子表格的不同工作表

function onMyEdit(e) {
  //e.source.toast("Entry");
  //Logger.log(JSON.stringify(e));
  const sheet = e.range.getSheet();
  if (e.range.columnStart == 2 && e.range.rowStart == 1 && e.value ) {
    const shts = {"Sheet1":"1553288907","Sheet2":"1273539231"};
    //e.source.toast('Flag1');
    const url = `https://docs.google.com/spreadsheets/d/11yNxdh/edit#gid=${shts[e.value]}?usp=sharing`;
    //Logger.log(url);
    const html = `<script>window.open('${url}', '_blank');google.script.host.close();</script>`;
    SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "sample");
  }
  if(e.range.rowStart == 1 && e.range.columnStart == 1 && e.value) {
    e.source.getSheetByName(e.value).activate();
  }
}

在我的示例中,我使用了列表 Sheet1、Sheet2 中的数据验证,您可以将 id 添加到 shts 对象并将其插入到 url 中,例如 ${shts[e.value] [id]}