将“行合并”主题应用于范围

时间:2018-07-30 23:06:01

标签: google-apps-script syntax enums google-sheets

我是Google Apps脚本的初学者,但可以使用它来自动执行一些简单的重复任务。我每周有几个电子表格要复制内容,并将其导出为发送给客户的.xls文件。

我正在尝试在从另一张纸复印的范围内应用交替的颜色,但我完全卡住了。如何使用bandingTheme方法正确设置applyRowBanding?在代码的最后一行中应该使用什么正确的语法?

我的代码:

function copyRange (SourceSSID, SourceRange, TargetSheetName, bandingTheme) {
  var sheetSource = SpreadsheetApp.openById(SourceSSID);
  var sheetTarget = SpreadsheetApp.openById("bla-bla");
  var source =  sheetSource.getRange(SourceRange);
  var target_ss = sheetTarget.getSheetByName(TargetSheetName);
  var values = source.getValues();
  var target = target_ss.getRange(1, 1, values.length, values[0].length);
  target.clear();

  target.setValues(values);

  target.applyRowBanding ();
}

1 个答案:

答案 0 :(得分:1)

如果方法参数bandingTheme是列出的here枚举之一,则可以使用apply___Banding(BandingTheme theme)方法签名简单地应用它:

target.applyRowBanding(bandingTheme);

根据文档,以上内容等同于此行:

target.applyRowBanding(bandingTheme, true, false);

(换句话说,除了交替的行颜色外,默认行为是为页眉而不是页脚着色。)

您可以确保以前没有现有的主题(在任何给定时间都只能显示一种交替的颜色-无论是列还是行中的颜色-否则都会引发错误)。

target.getBandings().forEach(function (banding) {
  banding.remove();
});
/**
 * set the new banding theme
 * ....
 */

如果要设置自定义带状主题,可以从主题设计之一开始。请注意,apply___Banding方法返回它们应用的Banding对象。如果绑定此返回值(或链接方法),则可以使用其返回值类来修改它。

const newBanding = target.applyRowBanding(SpreadsheetApp.BandingTheme.BLUE);
// newBanding is now a Banding that was instantiated with the "Blue" template.
// Color the header column:
newBanding.setHeaderColumnColor('teal');

// Equivalent:
target.applyRowBanding(SpreadsheetApp.BandingTheme.BLUE).setHeaderColumnColor('teal');

请注意,无法为行带状主题中的非标题列设置颜色。同样,在列带主题中设置非标题行颜色。


如果您的bandingTheme参数不是主题枚举之一,那么您将不得不提供有关其主题的更多详细信息,以便获得有助于将其转换为可用的Spreadsheet Service方法的答案。 / p>