【发布时间】:2015-09-27 23:22:27
【问题描述】:
我想在 Google 表格中编写一个公式,以便我可以附加到一个按钮上,以使单元格中的值在每次单击时增加 1。
Here 是我在这个主题上能找到的最好的。
我试图这样做,但无济于事。我正在使用 Windows 7 和 Chrome。
【问题讨论】:
标签: google-apps-script google-sheets
我想在 Google 表格中编写一个公式,以便我可以附加到一个按钮上,以使单元格中的值在每次单击时增加 1。
Here 是我在这个主题上能找到的最好的。
我试图这样做,但无济于事。我正在使用 Windows 7 和 Chrome。
【问题讨论】:
标签: google-apps-script google-sheets
首先创建一个脚本来增加单元格的值。例如,要将单元格“A1”增加一,以下脚本将起作用:
function increment() {
SpreadsheetApp.getActiveSheet().getRange('A1').setValue(SpreadsheetApp.getActiveSheet().getRange('A1').getValue() + 1);
}
保存此脚本并打开您的电子表格并按照以下步骤操作:
【讨论】:
我想根据Marlon's评论提供一种不同的方法:
如果我们想为不同的行和每行创建多个按钮怎么办? 按钮修改自己的行?有没有办法不手动创建?
您可以使用onSelectionChange 来捕获单次点击事件并模仿按钮的行为。
当点击相同行的B列中的单元格时,以下脚本将增加列A中的单元格的值。
它还会动态创建一个“按钮”文本,但这是可选的,由用户决定。
要使用此解决方案,只需将其复制并粘贴到脚本编辑器并保存更改即可。之后,它将在单击事件时自动使用。在此解决方案中,我使用 Sheet1 作为工作表名称。
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
const col = e.range.getColumn();
const row = e.range.getRow();
if (as.getName() == 'Sheet1' && col == 2){
const range = as.getRange(row,1);
range.setValue(range.getValue()+1);
e.range.setValue('Button');
}
}
虽然这种方法效果很好,但有两个缺点:
点击和更新之间有一点延迟。
选择单元格时触发触发器。如果一个单元格已经被选中,如果您再次单击它,该功能将不会触发。您必须删除当前选择,然后再次选择它。
【讨论】:
onEdit 会更合适。
将以下内容分配给工作表内的绘图,它将当前选定单元格的值增加 1:
function plusOne() {
var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
var value = cell.getValue() * 1;
cell.setValue(value+1);
}
【讨论】: