Google apps script onSelectionChange可在Google工作表的另一个选项卡上显示选定单元格引用的值

Google apps script onSelectionChange可在Google工作表的另一个选项卡上显示选定单元格引用的值,google-apps-script,google-sheets,selection,matching,Google Apps Script,Google Sheets,Selection,Matching,这是我发布的另一篇关于选举变化的文章的变体 这是我的床单 我的目标:如果“Sheet3”中有一个单元格!A5:用鼠标/光标选择C9,然后选择“Sheet3”!A1=工作表“参考”中的相应单元格 例如:如果我点击A7,那么A1='Reference'!A7 这是我第一次通过脚本,但它似乎不起作用: function onSelectionChange(e) { const as = e.source.getActiveSheet(); const row = e.range.getRow(

这是我发布的另一篇关于选举变化的文章的变体

这是我的床单

我的目标:如果“Sheet3”中有一个单元格!A5:用鼠标/光标选择C9,然后选择“Sheet3”!A1=工作表“参考”中的相应单元格

例如:如果我点击A7,那么A1='Reference'!A7

这是我第一次通过脚本,但它似乎不起作用:

function onSelectionChange(e) {
  const as = e.source.getActiveSheet();
  const row = e.range.getRow();
  const col = e.range.getColumn();
  
  if( as.getSheetID() == '2006534856' ) { return; }
  
  if (row>4 && row<10 && col<4)
       {as.getRange('A1').setValue(as.getSheetName('Reference').getRange(row,col).getValue());}
  
  else 
     {as.getRange('A1').setValue(" "); }

}
选择更改功能(e){
const as=e.source.getActiveSheet();
const row=e.range.getRow();
const col=e.range.getColumn();
如果(as.getSheetID()='2006534856'){return;}
如果(第4行和第4行)出现问题/解释:
  • 要使用
    getSheetByName('Reference')
    而不是
    getSheetName('Reference')

  • as
    是活动工作表。活动工作表没有方法
    getSheetByName
    。而是要获取电子表格。使用事件对象的方法是使用
    e.source
    。因此,最终表达式为:

    e.source.getSheetByName('Reference')

  • 如果工作表ID为
    2006534856
    ,则如果(as.getSheetID()==“2006534856”){return;}
将终止函数。即使您是故意这样做的,这也不是一个很好的做法

  • 相反,检查活动工作表的名称是否与
    Sheet3
    匹配,并将范围条件放在同一
    if
    语句中:

    if(as.getName()='Sheet3'&&row>4&&row问题/解释:
    
    • 要使用
      getSheetByName('Reference')
      而不是
      getSheetName('Reference')

    • as
      是活动工作表。活动工作表没有方法
      getSheetByName
      。而是要获取电子表格。使用事件对象的方法是使用
      e.source
      。因此,最终表达式为:

      e.source.getSheetByName('Reference')

    • 如果工作表ID为
      2006534856
      ,则如果(as.getSheetID()==“2006534856”){return;}
    将终止函数。即使您是故意这样做的,这也不是一个很好的做法

  • 相反,检查活动工作表的名称是否与
    Sheet3
    匹配,并将范围条件放在同一
    if
    语句中:

    如果(as.getName()='Sheet3'&&row>4&&rowExplain)无法解决您的问题,我发布了解决方案。但是:1)正如@TheMaster所提到的,当某些问题不起作用时,您需要告诉我们您是否看到任何错误或意外行为。2)当您决定与我们共享文件时,请将其公开,以便我们可以查看。3)(可选但推荐),如果有人回答了你的问题并解决了你的问题,请接受他的回答,这样此人和未来的读者都能从你的问题中受益。我在这篇文章中不是指我的答案,而是指一个答案。解释你的问题是行不通的。我发布了解决方案。但是:1)正如@TheMaster所提到的,当某些内容不起作用时,您需要告诉我们是否看到任何错误或意外行为。2)当您决定与我们共享文件时,请将其公开,以便我们可以查看。3)(可选但推荐),如果有人回答了你的问题并解决了你的问题,请接受他的回答,这样此人和未来的读者都能从你的问题中受益。我在这篇文章中指的不是我的答案,而是一个答案。
    
    function onSelectionChange(e) {
      const as = e.source.getActiveSheet();
      const row = e.range.getRow();
      const col = e.range.getColumn();
      
      if( as.getName() == 'Sheet3' && row>4 && row<10 && col<4 ){
          as.getRange('A1').setValue(e.source.getSheetByName('Reference').getRange(row,col).getValue());
      }
      else{    
          as.getRange('A1').setValue('');
      }
    
    }