是否可以对我手动输入的自定义格式化规则进行反向工程,然后创建一个应用程序脚本作为回报?
我想生成类似下面这样的东西
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenNumberBetween(1, 10)
.setBackground("#FF0000")
.setRanges([range])
.build();

发布于 2021-06-03 14:23:29
在您的情况下,我认为当使用Sheets API时,可以简单地创建脚本。
因为当使用Sheets API时,条件格式规则的每个设置都可以作为一个对象进行检索,并且可以使用该对象进行设置。另一方面,当使用电子表格服务(SpreasheetApp)时,需要准备用于设置的每种方法。在这种情况下,我认为脚本可能有点复杂。
因此,在这个答案中,作为实现您的目标的一个方向,我建议将Sheets API与Google Apps脚本一起使用。
示例脚本1:
此示例脚本从Google电子表格中的特定工作表中检索条件格式规则。在使用此脚本之前,请使用please enable Sheets API at Advanced Google services。
function myFunction1() {
const srcSpreadsheetId = "###"; // Please set the source Spreadsheet ID.
const srcSheetId = "0"; // Please set the source sheet ID.
const obj = Sheets.Spreadsheets.get(srcSpreadsheetId, {fields: "sheets(conditionalFormats,properties)"});
const rules = obj.sheets.reduce((ar, s) => {
if (s.properties.sheetId == srcSheetId && s.conditionalFormats) ar = ar.concat(s.conditionalFormats);
return ar;
}, []);
console.log(JSON.stringify(rules)); // You can see all rules of conditional format rules in the specific sheet of the Spreadsheet.
}示例脚本2:
此示例脚本通过上面的示例脚本将检索到的条件格式规则设置为Google电子表格中的特定工作表。
function myFunction2() {
const rules = [,,,]; // Please set the retrieved conditional format rules.
if (rules.length > 0) {
const dstSpreadsheetId = "###"; // Please set the source Spreadsheet ID.
const dstSheetId = "0"; // Please set the source sheet ID.
const requests = rules.map((rule, i) => {
rule.ranges.forEach(r => r.sheetId = dstSheetId);
return {addConditionalFormatRule: {index: i, rule: rule}};
});
Sheets.Spreadsheets.batchUpdate({requests: requests}, dstSpreadsheetId);
}
}参考文献:
https://stackoverflow.com/questions/67815085
复制相似问题