我把很多纸放在一个文件夹中。 我想将格式应用于所有工作表。例如将边框,将第一行加粗并应用条件格式。另一件事很完美,但是条件格式存在一些问题。它说TypeError:工作表不是XML对象。在每次开始条件格式化时。代码是:
function ledgerformatting() {
var fol = "1mg729p0ARzfxbdWTJQ23zELfeXQElP-v";
var folders = DriveApp.getFolderById(fol).getFiles();
while (folders.hasNext()) {
var folder = folders.next().getId();
var spreadsheet = SpreadsheetApp.openById(folder).getActiveSheet()
spreadsheet.getRange('A1').activate();
spreadsheet.getCurrentCell().setValue('date');
spreadsheet.getRange('C1').activate();
spreadsheet.getCurrentCell().setValue('debited');
spreadsheet.getRange('D1').activate();
spreadsheet.getCurrentCell().setValue('credited');
spreadsheet.getRange('A1:E1').activate();
spreadsheet.getActiveRangeList().setFontWeight('bold')
.setHorizontalAlignment('right')
.setBorder(null, null, true, null, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK);
spreadsheet.getRange('E:E').activate();
var conditionalFormatRules = spreadsheet..getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenCellNotEmpty()
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet ().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=if')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet ().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=i')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet ().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet ().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1:B')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet ().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1:B2')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1:B2=""')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1:B2=""')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E1000')])
.whenFormulaSatisfied('=$B1:B2=""')
.setFontColor('#FFFFFF')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules (conditionalFormatRules);
};
}
答案 0 :(得分:1)
我只更正了部分代码,所以这里有问题:
..
两个点。spreadsheet
时使用sheet
getActiveSomething()
之类的函数。所以这是更正的代码:
function ledgerformattingCorrected() {
var fol = "1mg729p0ARzfxbdWTJQ23zELfeXQElP-v";
var folders = DriveApp.getFolderById(fol).getFiles();
while (folders.hasNext()) {
var folder = folders.next().getId();
var sheet = SpreadsheetApp.openById(folder).getActiveSheet()
sheet.getRange('A1').setValue('date');
sheet.getRange('C1').setValue('debited');
sheet.getRange('D1').setValue('credited');
sheet.getRange('A1:E1').setFontWeight('bold')
.setHorizontalAlignment('right')
.setBorder(null, null, true, null, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK);
var range = sheet.getRange('E:E');
var conditionalFormatRules = sheet.getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
.setRanges([range])
.whenCellNotEmpty()
.setBackground('#B7E1CD')
.build());
//continue pushing other format rules as so:
//conditionalFormatRules.push(newConditionalFormatRule);
sheet.setConditionalFormatRules(conditionalFormatRules);
}
}
参考