如何从Google电子表格中的另一张纸上获取带有文本的彩色单元格?

时间:2019-06-13 07:37:49

标签: google-apps-script google-sheets google-sheets-formula gs-conditional-formatting google-sheets-importxml

如何从Google电子表格的另一张纸上获取带有文本的彩色单元格?

您好,我有2张纸,我正在尝试从第1张纸到第2张纸上带有文本的彩色单元格。

有人可以帮我吗?

示例:

在工作表1中,我将数据放入第1列的第1行,然后为其着色  同时显示黄色,它将显示在工作表2的第1列第1行中。

1 个答案:

答案 0 :(得分:1)

复制所有内容

如果要复制所有内容,包括Range值,颜色,背景色等,请使用简单的copyTo()方法。只需记住Range的尺寸应该相等(ofc,您可以随时添加相应的处理内容)。

/**
 * Copies all;
 * @param {Range} source copy from range;
 * @param {Range} target copy to range;
 */
function copyAll(source,target) {
  source.copyTo(target);
}

有条件的副本

如果您只想复制Range的特定属性,可以使用copyTo()枚举来调用上述CopyPasteType方法,如下所示(请注意,由于与两个冲突-arg调用copyTo(range,options),需要转置arg-如果您不希望方向发生变化,则可以在函数内部对其进行硬编码):

/**
 * Copies only specific props;
 * @param {Range} source copy from range;
 * @param {Range} target copy to range;
 * @param {String} type enum CopyPasteType;
 * @param {Boolean} transposed change orientation or not;
 */
function copyConditional(source,target,type,transposed) {
  var t = SpreadsheetApp.CopyPasteType[type];
  source.copyTo(target,t,transposed); //if transpose is not specified, will be treated as copyTo(destination,options)!;
}

通过getter和setter复制

例如,分别使用getBackgrounds()setBackgrounds()(还有许多其他的getter-setter方法可以代替copyTo()单独使用,请参见Range有用链接中的参考)。

/**
 * Copies background color;
 * @param {Range} source copy from range;
 * @param {Range} target copy to range;
 */
function copyColor(source,target) {
  var color = source.getBackgrounds();  
  target.setBackgrounds(color);
}

有用的链接

  1. copyTo() reference;
  2. CopyPasteType枚举reference;
  3. Rangereference;