onSelectionChange 在 Google 表格中的另一个选项卡上显示所选单元格引用的值
onSelectionChange to display the value of the selected cell reference on another tab in Google Sheets
这是另一个 question 的变体,我发布了关于 onSelectionChange。
这是我的 test sheet.
我的目标:如果'Sheet3'!A5:C9中的单元格被mouse/cursor选中,那么'Sheet3'!A1 = sheet 'Reference'.
中对应的单元格
例如:如果我点击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(" "); }
}
问题/解释:
而不是 getSheetName('Reference')
你想使用 getSheetByName('Reference')
.
as
是活动 sheet。活动 sheet 没有方法 getSheetByName
。相反,您想获得点差sheet。使用事件对象来做到这一点的方法是使用 e.source
。因此最终表达式将是:
e.source.getSheetByName('Reference')
如果 sheet ID 为 2006534856
,此 if( as.getSheetID() == '2006534856' ) { return; }
将终止您的函数。即使您是故意这样做的,这也不是一个很好的做法。
相反,检查活动 sheet 的名称是否匹配 Sheet3
并将范围条件放在同一个 if
语句中:
if( as.getName() == 'Sheet3' && row>4 && row<10 && col<4 )
解决方案:
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('');
}
}
这是另一个 question 的变体,我发布了关于 onSelectionChange。
这是我的 test sheet.
我的目标:如果'Sheet3'!A5:C9中的单元格被mouse/cursor选中,那么'Sheet3'!A1 = sheet 'Reference'.
中对应的单元格例如:如果我点击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(" "); }
}
问题/解释:
而不是
getSheetName('Reference')
你想使用getSheetByName('Reference')
.as
是活动 sheet。活动 sheet 没有方法getSheetByName
。相反,您想获得点差sheet。使用事件对象来做到这一点的方法是使用e.source
。因此最终表达式将是:e.source.getSheetByName('Reference')
如果 sheet ID 为
2006534856
,此if( as.getSheetID() == '2006534856' ) { return; }
将终止您的函数。即使您是故意这样做的,这也不是一个很好的做法。相反,检查活动 sheet 的名称是否匹配
Sheet3
并将范围条件放在同一个if
语句中:if( as.getName() == 'Sheet3' && row>4 && row<10 && col<4 )
解决方案:
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('');
}
}