首页 > 解决方案 > 谷歌表格创建一个按钮,点击它,它将从列表中给出下一个单元格

问题描述

我想创建一个函数,在单元格 D2 中显示列表 A2:A8 中的一个单元格,当我单击“向下”按钮时,它将在 D2 中显示列表 A2:a8 中的下一个单元格。当我单击“向上”按钮时,它将在 D2 中显示列表 A2:a8 中的下一个单元格。当我单击“重置”按钮时,它将在 D2 中显示单元格 A2。非常感激!谢谢!

在此处输入图像描述

标签: google-apps-scriptgoogle-sheets

解决方案


我相信你的目标如下。

  • 您在 Google 电子表格中的工作表上有 3 个按钮。
  • 单击按钮时,您想更改单元格“D2”的值。
  • 例如,当单元格“A2:A8”有一个列表时a,b,c,d,e,f,g
    • 当您单击向上按钮时,您希望将列表中的一个元素的值从ga
    • 当您单击向下按钮时,您希望将列表中的一个元素向下从a到的值g
    • 当您单击重置按钮时,您想要设置列表中的顶部元素。对于样本值,a设置。

在这种情况下,我认为需要使用 Google Apps Script,因为该脚本是通过单击按钮运行的。在这个答案中,我想提出以下示例脚本。

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中。请将、和的功能名称分别分配给updownreset的按钮。这样,每个功能都通过单击按钮来运行。updownreset

function handler_(button) {
  var lock = LockService.getDocumentLock();
  if (lock.tryLock(10000)) {
    try {
      const sheet = SpreadsheetApp.getActiveSheet();
      const range = sheet.getRange("D2");
      let cellD2 = range.getValue();
      const list = sheet.getRange("A2:A8").getValues().flat();
      if (cellD2 == "") cellD2 = list[0];
      const index = list.indexOf(cellD2);
      const newIndex = button == "up" ? index - 1 : button == "down" ? index + 1 : 0;
      if (newIndex >= 0 && newIndex < list.length) {
        range.setValue(list[newIndex]);
      }
    } catch(e) {
      throw new Error(e);
    } finally {
      lock.releaseLock();
    }
  }
}

const up = _ => handler_("up");
const down = _ => handler_("down");
const reset = _ => handler_("reset");

结果:

当上述脚本用于您的示例电子表格时,它变为如下。

在此处输入图像描述

笔记:

  • 这是一个简单的示例脚本。所以请根据您的实际情况进行修改。

参考:


推荐阅读