首页 > 解决方案 > 如何使用下拉菜单更改范围的单元格内容?

问题描述

所以我在表格上有一个文件,文件中有一部分单元格被格式化,所以当你输入“0”时,它们是空圆圈,当你输入任何其他数字时(我只是用“1”来制作很容易),圆圈被填满。我知道我可能可以使用实际工作表中的公式,但我希望选择单独编辑单元格。我真的只需要下拉菜单一次填充它们或清除它们以节省时间。下拉菜单有“清除”和“填充”选项。

我在分组单元格 AG97:AN97 中有下拉菜单,我希望能够更改 W100:W103 中的单元格(范围更多,但一次一步。)

我尝试使用以前的问题来帮助我,但我似乎无法掌握代码。

 function addValidation() {
    var range = SpreadsheetApp.openById('(SHEETID)');
    var sheet = ss.getSheets()[0];
    var values = range.getValues();


  var data = sheet.getDataRange().getValues();

  var rule = SpreadsheetApp.newDataValidation().requireValueInList(["Clear", "Fill"]).build();


  for(var i=0; i<data.length; i++) {

    if(data[i][22] == "Clear") {


      sheet.getRange(i+100, 7).clear().setDataValidation(rule);
    }
  }
}

我只是为了显示代码而替换了工作表的想法。在尝试填充之前,我尝试让 clear 功能起作用,但没有运气。我不断收到“错误值(第 2 行,文件“代码”)”

标签: google-apps-scriptgoogle-apps-script-editor

解决方案


“错误值(第 2 行,文件“代码”)”表示您错误地插入了 SpreadsheetID。

如果您的电子表格 URL 类似于

https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0,则 ID 是用 X 指定的部分 - 通常长度为 44 个字符。

openById()Yuo 需要用引号(或双引号)将其传递给方法,但不带括号:

SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');

此外,可能您想将其分配给一个名为ss而不是的变量range,因为您的下一行是var sheet = ss.getSheets()[0];.


推荐阅读