在Google Sheets中使用列表宏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Google Sheets中使用列表宏相关的知识,希望对你有一定的参考价值。

我有一个列表,我想把元素添加到列表中,同时在嵌套的for循环中循环单元格索引引用。然而,似乎没有一种方法可以让我利用它将元素插入到一个列表中。参见示例。

var colors = range.getBackgrounds();
for (var i = 0; i < rangeHeight; i++)
   for (var j = 0; j < rangeWidth; j++)
      colors.add("#somecolorhash");
range.setBackgrounds(colors);

这将是我想的方法,但是IDE中的... Recorded Macros 似乎没有一个插入或等价的方法来应用于列表对象。对这个问题有什么想法吗?

答案
  • 如果你登录 range.getBackgrounds()你会看到它返回一个二维数组,形式为 [[#ffffff, #ffffff], [#ffffff, #ffffff]] - 而不是列表!

  • 要将新的值分配给 colors,你需要用它们的索引来处理单项。colors[i][j].

  • 要知道,为了 setBackgrounds 色域 colors 需要像你的射程一样有相同的刻度。

  • 所以,在你的示例中,你需要替换颜色,而不是添加新的值(否则,你的 colors 的范围会变得太大而无法满足工作表的要求。

样品1。

function myFunction() 
  var range = SpreadsheetApp.getActiveSheet().getRange("A1:B2");
  var colors = range.getBackgrounds();
  Logger.log(colors);
  var rangeHeight = colors.length;
  var rangeWidth = colors[0].length;
  for (var i = 0; i < rangeHeight; i++)
    for (var j = 0; j < rangeWidth; j++)
      colors[i][j]="#000000";
    
  
  range.setBackgrounds(colors);

  • 请注意,重要的是要使用 ...for 循环,否则只有后面的第一行会被视为循环的一部分。
  • 如果您想为整个范围分配相同的颜色,您可以使用 setBackground() 而不是 setBackgrounds().

样本2:

function myFunction2() 
  var range = SpreadsheetApp.getActiveSheet().getRange("A1:B2");
  range.setBackground("#00ff00");

以上是关于在Google Sheets中使用列表宏的主要内容,如果未能解决你的问题,请参考以下文章

使用Sheets API v4获取与Google帐户关联的所有电子表格列表

Google Sheets ArrayFormula - 前行的平均值

使用 Google Sheets API 将图像插入 Google Sheets 单元格

如何使用 Sheets APIv4 Java 在 Google 表格中插入一行

使用 Sheets API v4 Java 阅读整个 Google 电子表格

使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期