使用自定义功能将背景颜色从一列复制到另一列

时间:2018-03-21 13:39:21

标签: google-apps-script google-sheets custom-function

我写了这个看似简单的脚本,将背景颜色从一列复制到另一列。

当我运行脚本时,我没有收到任何错误消息,但似乎没有发生任何事情。

这是我在纸张上输入单元格的内容:

=copyColor("B:B", "A:A")

我在Google Apps脚本论坛上阅读了一篇帖子,暗示这种类型的程序是不可能的,但我决定编写一个可以将其删除的脚本。

以下是the post所说的内容:

  

"正如文档中清楚解释的那样,自定义函数返回值,但是它们不能在它们所在的单元格之外设置值。在大多数情况下,单元格A1中的自定义函数不能修改单元格A5。当然,对于其他方法也是如此,例如setBackground等。"

这就是为什么我试图通过不使用setBackgrounds()函数解决问题。

还有其他方法吗?或者有什么方法可以解决我的问题吗?

function copyColor(rangeToCopy, rangeToPaste)
{
  //an array to store the first background colors
  var firstColors = [];
  //an array to store the second background colors
  var secondColors = [];

  //this will assign the first range into a variable
  var firstRange = SpreadsheetApp.getActiveSheet().getRange(rangeToCopy);
  //this will store the colors of the range into the firstColors array
  firstColors = firstRange.getBackgrounds();

  //this will assign the second range to a variable
  var secondRange = SpreadsheetApp.getActiveSheet().getRange(rangeToPaste);
  //this will store the colors of the range into the secondColors array
  secondColors = secondRange.getBackgrounds();

  //compare the two color arrays. if they do not match, apply the first array to the second array
  if (firstColors != secondColors)
  {
    secondColors = firstColors
  }

}

0 个答案:

没有答案