我是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 ();
}
答案 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>