google-apps-script - 通过脚本启用复选框时如何用值替换公式。(谷歌表格)
问题描述
我在谷歌标签的编程脚本方面绝对是零。对不起,如果我问了一个奇怪的问题,或者填写错误。我真的是这个网站的新手。
有一个工作表示例: A 列和 B 列只是数字 C 列和 D 列包含公式。比如 C2=(A2+B2), D2=(A2-B2)
一项任务:当我单击该行旁边的按钮或复选框时,我想要它。此行上的所有值都作为值插入。(我的意思是,公式被删除并替换为值)并且复选框被删除。
我尝试通过录制宏并获取代码来做到这一点,但我仍然无法弄清楚:
- 如何激活复选框的脚本。
- 如何使每一行都有自己的复选框并且可以工作。
function _111() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('E2').activate();
spreadsheet.getCurrentCell().setValue('TRUE');
spreadsheet.getRange('A2:D2').activate();
spreadsheet.getRange('A2:D2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('E2').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
如果可以,请你帮助我。
MetaMan 的 UPD 特殊: 我的 TAB 工作表名称是“Sell tab”
解决方案
function onEdit(e) {
//e.source.toast('entry');//debug
const sh = e.range.getSheet();
//sh.getRange('P1').setValue(JSON.stringify(e));//debug
if(sh.getName()=='Sheet1' && e.range.columnStart==5 && e.range.rowStart>1 && e.value == "TRUE") {
//e.source.toast('sheet');//debug
sh.getRange(e.range.rowStart,3,1,2).setValues(sh.getRange(e.range.rowStart,3,1,2).getValues());
sh.getRange(e.range.rowStart,e.range.columnStart).clearDataValidations().clearContent();
}
}
演示:
从我的调试行中删除注释可能对您有所帮助。如果您在 P1 中没有任何特别之处,我将在其中显示 onEdit 触发器的事件对象。我喜欢在调试问题时查看它。
推荐阅读
- r - `se` 在 geom_smooth(..., se = FALSE) 中代表什么?
- javascript - SyntaxError:react-table/src/publicUtils.js:当前未启用对实验语法“jsx”的支持
- excel - 如何在 Mac (parallèle) 中使用 vba 创建文件?
- react-native - npx react-native init 挂起,没有任何输出
- javascript - 如何过滤字符串中的确切单词?
- python - 布尔值的初始组合框值显示为 1 而不是 True
- c# - 如何在我的不同服务类中使用通用类 T?
- node.js - 是否可以向服务器发送带有多个 cookie 的 HTTPS 请求?云端nodejs
- sql - 如何防止Oracle中的并发INSERT
- r - 无法将 PCA prcomp 中的标签从行号更改为站点名称