Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google sheets宏,用于根据下拉选择切换到其他工作表_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google sheets宏,用于根据下拉选择切换到其他工作表

Google apps script Google sheets宏,用于根据下拉选择切换到其他工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,当前正在构建一个函数,当从下拉数据验证菜单中选择某个选项时,用户将重定向到工作簿中的其他工作表。我目前所拥有的不会返回错误,但也不会执行预期的操作。任何帮助都将不胜感激 function gotoselectsheetnosheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var range = sheet.getRange(4,3); var dat

当前正在构建一个函数,当从下拉数据验证菜单中选择某个选项时,用户将重定向到工作簿中的其他工作表。我目前所拥有的不会返回错误,但也不会执行预期的操作。任何帮助都将不胜感激

function gotoselectsheetnosheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange(4,3);
  var data = range.getValue();  
  if (data == "Answers")
  {  
     var dinner = ss.getSheetByName('Answers');
     dinner.activate();
   }
}

如果您设置了onEdit()触发器,则此操作有效

e、 source是电子表格对象的事件对象资源。期待了解更多关于它的信息

接下来是getSheetByName(e.value),e.value是正在编辑的单元格中的新值

接下来是激活。这使它移动到指定的工作表。因此,假设您已在验证设置中选择了适当的图纸名称

验证设置:

当您在“验证”下拉列表中选择触发onEdit触发器的两个可能选项之一时,函数会将您带到具有该名称的选项卡

验证设置中使用的命名范围:

OneEdit触发器设置:


如果您设置了onEdit()触发器,则此操作有效

e、 source是电子表格对象的事件对象资源。期待了解更多关于它的信息

接下来是getSheetByName(e.value),e.value是正在编辑的单元格中的新值

接下来是激活。这使它移动到指定的工作表。因此,假设您已在验证设置中选择了适当的图纸名称

验证设置:

当您在“验证”下拉列表中选择触发onEdit触发器的两个可能选项之一时,函数会将您带到具有该名称的选项卡

验证设置中使用的命名范围:

OneEdit触发器设置:

试试这个解决方案

function onEdit(e) {
  if(e.source.getActiveSheet().getName() === "Menu" && e.range.getRow() === 4 && e.range.getColumn() === 3) {
    e.source.getSheetByName(e.value).activate();
  }
}
试试这个解决方案

function onEdit(e) {
  if(e.source.getActiveSheet().getName() === "Menu" && e.range.getRow() === 4 && e.range.getColumn() === 3) {
    e.source.getSheetByName(e.value).activate();
  }
}


你能把它变成一个连贯的函数吗?因为我很难按照你的逻辑来处理单个代码段。所以我需要两个单独的函数来完成这项工作。这是一个问题还是一个陈述?我不明白,一个问题。您创建了一个只有一行的函数,因此我不确定如何将其合并到我已经编写的内容中。我建议我的函数替换您的所有代码。您能否将其合并到一个连贯的函数中,因为我无法使用单个代码段来遵循您的逻辑,因此我需要两个单独的函数来执行此操作这是问题还是陈述?我不明白,一个问题。您创建了一个只有一行的函数,因此我不确定如何将其合并到我已经编写的内容中。我建议我的函数替换您的所有代码。我收到以下错误:TypeError:无法从undefined读取属性“source”。(第2行,文件“代码”)这是因为您手动运行了该函数。当您更改下拉列表中的选择时,应自动调用它。如何设置?我刚开始使用google Sheets你不需要设置它。它自动工作。如果有名为
onEdit
的函数,则每当电子表格中的某些值发生更改时,将自动调用该函数。顺便说一句。库珀的解决方案也会奏效。唯一的区别是他使用了手动添加的触发器,而不是自动添加的触发器。(第2行,文件“代码”)这是因为您手动运行了该函数。当您更改下拉列表中的选择时,应自动调用它。如何设置?我刚开始使用google Sheets你不需要设置它。它自动工作。如果有名为
onEdit
的函数,则每当电子表格中的某些值发生更改时,将自动调用该函数。顺便说一句。库珀的解决方案也会奏效。唯一真正的区别是他使用了手动添加的触发器而不是自动触发器。