Google apps script 当特定单元格具有特定值时触发宏时出现问题
我正在尝试触发google sheet宏/应用程序脚本,以便在特定单元格中输入特定值时重新格式化工作表。我一直在努力让它工作,但没有成功 这是我的密码Google apps script 当特定单元格具有特定值时触发宏时出现问题,google-apps-script,google-sheets,triggers,Google Apps Script,Google Sheets,Triggers,我正在尝试触发google sheet宏/应用程序脚本,以便在特定单元格中输入特定值时重新格式化工作表。我一直在努力让它工作,但没有成功 这是我的密码 function onEdit(e) { var spreadsheet = SpreadsheetApp.getActive(); var sheet = SpreadsheetApp.getActiveSheet(); var cell = sheet.getRange('C2'); var cellContent = cel
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange('C2');
var cellContent = cell.getValue();
if(cellContent === 'Past campaigns - actual cashflows to date only') {
spreadsheet.getRange('7:12').activate();
spreadsheet.getActiveSheet().hideRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
spreadsheet.getRange('13:13').activate();
}
};
我不熟悉宏和应用程序脚本。我已尝试执行以下链接中的所有建议,但没有成功
if
语句中执行。但你已经这么做了 试试这个:
function onEdit(e) {
e.source.toast('Entry');
const sh=e.range.getSheet();
if(sh.getName()!='Sheet Name')return;//you need to change this sheetname
const X=sh.getRange('C2').getValue();
if(X=='Past campaigns - actual cashflows to date only') {
e.source.toast('flag1');
sh.hideRows(e.range.rowStart,e.range.rowEnd-e.range.rowStart+1);
}
}
在大多数脚本中不必使用activate,当然在这个脚本中也不必使用activate,因为它必须在30秒内完成。它们在宏中使用activate,因为当您在屏幕上移动时,它们会跟踪您的操作。但是在一个脚本中,通常不想与屏幕进行太多的交互,因为它会减慢脚本的速度,并且不会真正完成任何事情
我目前正在使用一个在电子表格打开时运行的脚本,因为它有很多行,我想让它转到最后一行。所以激活很有用,因为我不必每次打开电子表格都向下滚动到最后一行
试着这样做:
function onEdit(e) {
//e.source.toast('Entry');
var sh=e.range.getSheet();
if(sh.getName()!='Sheet Name')return;//you need to change this sheetnamee
var X=sh.getRange('C2').getValue();
if(X=='Past campaigns - actual cashflows to date only') {
//e.source.toast('flag1');
sh.hideRows(e.range.rowStart,e.range.rowEnd-e.range.rowStart+1);
}
}
我希望您不要试图从脚本编辑器运行此操作,因为这样做行不通
当用户更改某个值时请注意。嗨@Cooper-感谢参与进来。。。。。。。。。。。。。。。。。。。。。。。。。。。我仍然缺少一些明显的东西,所以我希望你能进一步帮助我。。。。。。。。。。。。。。。。。。。。。你强调“用户”。那么,你是在解释,因为我创建了应用程序脚本,所以我不是“用户”,因此当我做出更改时,它将不起作用-但如果我以外的人做出更改,它将起作用?Thanksedit仅在实际用户在标准google电子表格用户界面上编辑单元格时触发。Thanksede@Cooper-我尝试在标准google电子表格用户界面上与用户触发宏-它仍然不会触发-因此我认为脚本的问题在别处。。。我可能会尝试从另一个角度来应对这个挑战。。。谢谢你的帮助,我刚刚在我的网站上放了
e.source.toast('Entry')代码>并进行编辑,它触发并显示了toast。所以你的脚本有问题。我不知道是否有其他人有这个问题,但似乎要花很长时间才能在V8模式下获取日志。我想我还是回到6缸原木吧。嗨,又来了,我试过了。非常感谢您的帮助,特别是关于不必要使用activate的建议。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我无法让这个脚本为我运行,它对我来说太高级了,无法解包和优化它,所以它确实工作了-我找到了另一种方法来解决我的问题,通过构建触发脚本的自定义菜单。。。非常感谢您的帮助,您是否启用了V8引擎?此代码有效。在给你之前我已经测试过了。如果你不能让它工作,你就做错了。