google-apps-script - 如何在任何 G 表格单元格中激活一个宏,该宏将在下一个单元格中复制和粘贴值?
问题描述
我正在寻找一种使用 G 脚本的简单方法来复制和粘贴宏启动时选择的任何单元格的值 - 或者更好的是,复制和粘贴由其位置定义的单元格的值,与所选单元格相比宏启动。
只是为了让它更明确一点,这是我的全部需求:我在电子表格中有两列,一列带有复选框(“TRUE”或“FALSE”),我想要一个宏来转换下一列中的公式将同一行转换为硬值(复制和粘贴值),只要勾选第一列中的框(“FALSE”到“TRUE”)。
到目前为止,我一直在尝试这样的事情,为了 1)选择当前单元格 2)转到右侧的下一个单元格 3)从中复制并粘贴值:
function PasteValue() {
var spreadsheet = SpreadsheetApp.getActive();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.RIGHT).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getActiveRange().copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
这可能完全是胡说八道。
解决方案
您可以使用onEdit(e)
简单的触发器来做到这一点,如下所示:
function onEdit(e) {
const checkboxColumn = 'Sheet1!C2:C';
const columnOffset = 1;
const checkboxes = SpreadsheetApp.getActive().getRange(checkboxColumn);
if (e.value !== 'TRUE'
|| e.range.columnStart !== checkboxes.getColumn()
|| e.range.rowEnd < checkboxes.getRow()
|| e.range.rowStart > checkboxes.getLastRow()
|| e.range.getSheet().getSheetId() !== checkboxes.getSheet().getSheetId()) {
return;
}
const cell = e.range.offset(0, columnOffset);
cell.setValue(cell.getValue());
}
推荐阅读
- python - 测试在 Django 中返回的多个对象(模拟?)
- javascript - Javascript 不适用于单击汉堡包以打开和关闭汉堡包
- javascript - 如何通过javascript或jquery在表单中设置多个默认按钮?
- asp.net - 我可以用什么来代替 ASP.NET MVC 5 中的 [AllowHtml] 属性?
- spring - 识别运行 Spring Boot 应用程序的平台
- docker - 构建 Dockerfile 时 AzureDevops 找不到 csproj 文件
- java - 无法在 http://localhost:8080/business-central 上启动 jbpm
- amadeus - 自助预订流程,包括付款
- pyspark - 如何在 pyspark 的数据透视表中添加/包含标题行和总计行?
- ruby-on-rails - Spree 自定义控制器中的实例变量 - 自动分配?