Google apps script 通过单击将单元格值增加一

Google apps script 通过单击将单元格值增加一,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想在Google sheets中编写一个公式,这样我可以附加一个按钮,使单元格中的值在每次单击时增加1。 这是我在这个话题上能找到的最好的答案 我试图这样做,但没有成功。我正在使用Windows7和Chrome 首先创建一个脚本以增加单元格值。例如,要将单元格“A1”增加1,可以使用以下脚本: function increment() { SpreadsheetApp.getActiveSheet().getRange('A1').setValue(SpreadsheetApp.getAc

我想在Google sheets中编写一个公式,这样我可以附加一个按钮,使单元格中的值在每次单击时增加
1
。 这是我在这个话题上能找到的最好的答案


我试图这样做,但没有成功。我正在使用Windows7和Chrome

首先创建一个脚本以增加单元格值。例如,要将单元格“A1”增加1,可以使用以下脚本:

function increment() {
  SpreadsheetApp.getActiveSheet().getRange('A1').setValue(SpreadsheetApp.getActiveSheet().getRange('A1').getValue() + 1);
}
保存此脚本并打开电子表格,然后执行以下步骤:

  • 转到“插入”>“绘图”并使用形状和文本绘制按钮
  • 相应地定位按钮,然后右键单击它以显示 旁边的箭头
  • 在下拉菜单中,选择“分配脚本”,然后键入脚本的名称 你的功能。(在本例中为“增量”)
  • 当你第一次点击它时,它会请求许可,但是 应该在以后工作


将以下内容指定给图纸中的图形,它将使当前选定单元格的值增加1:

function plusOne() {
 
  var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var value = cell.getValue() * 1;
  cell.setValue(value+1);
}
更新2020 动机: 我想根据评论提供一种不同的方法:

如果我们想为不同的行和每个行创建多个按钮,该怎么办 按钮修改自己的行?有没有办法不手动创建

解决方案: 您可以使用捕获单个单击事件并模拟按钮的行为

  • 单击相同行的
    B
    列中的单元格后,以下scirpt将增加
    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');
  }
}
演示:

限制: 虽然这种方法效果很好,但有两个缺点:

  • 在点击和更新之间有一点延迟

  • 选择单元格时触发。如果已选择某个单元格,如果再次单击该单元格,则不会触发该函数。您必须删除当前选择,然后再次选择它


  • 这是针对一个特定的单元格,如果我们要为不同的行创建多个按钮,并且每个按钮修改自己的行,该怎么办?有没有办法不手动创建此按钮?@Marlon如果您仍在寻找解决方案或解决方法,我发布了一个可能对您有用的答案。我认为复选框+编辑触发器方法更适合模拟按钮。@我在这个答案中介绍的场景中的主人是的。但是如果你在每一个单元格里都放上一个按钮,那么你就可以拥有更奇特的东西。您不限于复选框。但我同意,对于我展示的场景,使用
    onEdit
    更合适。