Shi*_*il 1 google-sheets google-apps-script
我有一个onOpen执行代码,但我希望它仅在打开特定工作表时执行(例如,在打开Sheet1onOpen 函数时应该运行。)有谁知道如何实现这一点?
这就是我想要实现的目标:
Run Code Online (Sandbox Code Playgroud)onOpen() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
但上面的说法有问题:
onOpen 仅在工作表打开后进行检查。我想在每次活动工作表是“Sheet1”时检查它。例如,最初用户打开电子表格,他们登陆到“Sheet1”现在检查条件并显示输出,但是如果用户将选项卡更改为“Sheet2”然后返回“Sheet1”会怎么样。那样的话onOpen()就不会执行。我想在每次用户登陆或切换到“Sheet1”时执行检查。
现在这是另一个场景:
使用onSelectionChange:
Run Code Online (Sandbox Code Playgroud)onSelectionCHange() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
现在,每次用户切换到“Sheet1”时,这都会起作用,但问题是,即使用户切换到“Sheet1”中的不同单元格onSelectionChange也会被触发,这又是不受欢迎的事情。我想要的只是在每次选项卡/工作表更改为“Sheet1”时触发该函数,而不仅仅是在打开电子表格或更改任何选择单元格时触发该函数。
要仅在从Sheet1打开电子表格文件时执行onOpen函数内的代码块,您可以构造以下 if 条件:
function onOpen(e) {
const as = e.source.getActiveSheet().getName();
if (as == 'Sheet1'){
//code you want to be executed when you open the spreadsheet from Sheet1
}
}
Run Code Online (Sandbox Code Playgroud)
onOpen函数仅在打开电子表格文件时执行。您不能只在工作表之间切换并期望 onOpen 起作用。
要在不同工作表之间切换时执行代码,您可以使用onSelectionChange(e). 以下示例在从其他工作表切换到Sheet1时设置Sheet1的单元格 A1 的值:
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
as.getRange('A1').setValue("This is Sheet1");
}
}
Run Code Online (Sandbox Code Playgroud)
这是切换到Sheet1时执行代码的通用代码模板:
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
// put your code here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |