下面的代碼將格式化您的谷歌表的表交替行:
function lastLine() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:A").getValues();
return range.filter(String).length;
}
function setConditionalFormat() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheets()[0]
var myRange = {
'sheetId': sheet.getSheetId(),
'startRowIndex': 1,
'endRowIndex': lastLine(),
'startColumnIndex': 0,
'endColumnIndex': 8
}
var format_req = {
'requests': [
{'addConditionalFormatRule': {
'index': 0,
'rule': {
'ranges': [ myRange ],
'booleanRule': {
'format': {'backgroundColor': {'red': 1, 'green': 1, 'blue': 1, 'alpha': 1}},
'condition': {
'type': 'CUSTOM_FORMULA',
'values': [{'userEnteredValue': '=ISEVEN(ROW())'}]
},
},
},
}
},
{'addConditionalFormatRule': {
'index': 0,
'rule': {
'ranges': [ myRange ],
'booleanRule': {
'format': {'backgroundColor': {'red': 222/255, 'green': 235/255, 'blue': 246/255, 'alpha': 0.7}},
'condition': {
'type': 'CUSTOM_FORMULA',
'values':
[{'userEnteredValue': '=ISODD(ROW())'}]
},
},
},
}
}
],
'includeSpreadsheetInResponse': false,
}
Sheets.Spreadsheets.batchUpdate(JSON.stringify(format_req), ss.getId())
}
看起來非常有前途的。但是,範圍copyTo()的範圍始終會失敗,並顯示「很抱歉,發生服務器錯誤,請稍等一會,然後重試。」 – Gary
我已經把這個腳本嘗試一下(它對我有效),並將其放入電子表格中:https://docs.google.com/spreadsheets/d/1C_hlAX8KTQa33ltANKEalsy18-TDy6c4ArLwBre3yL4/edit#gid=2037749471試試看讓我知道如果它不適合你。 –
現在有一個方法來傳輸格式現在range.copyFormatToRange():https://developers.google.com/apps-script/reference/spreadsheet/range#copyFormatToRange(Integer,Integer,Integer,Integer,Integer) 我是先前得到「我們很抱歉,發生了服務器錯誤,請稍等一下再試一次。」在答案中使用該方法。 –