Google Spreadsheet条件格式设置脚本

PY_*_*PY_ 12 google-sheets google-apps-script gs-conditional-formatting

我试图弄清楚如何在谷歌电子表格上使用条件格式,类似于你可以通过公式在excel中做的事情.

如果单元格O2的值为"X",我希望单元格A2变为绿色,这将在两个列上完成.我知道这需要一个脚本.

我跑过一个类似的链接,但我不知道如何调整它以满足我的需求.这是可以做到的吗?

链接:https: //webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting

小智 18

这是一个你可以用来做你所描述的脚本的脚本:

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var columnO = sheet.getRange(2, 15, sheet.getLastRow()-1, 1);
  var oValues = columnO.getValues();

  for (var i = 0; i < oValues.length; i++) {
    if (oValues[i][0] == 'X') {
      sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Dew*_*gan 11

在新的Google表格中,这不再需要脚本.

相反,在条件格式中,选择"自定义公式"选项,并输入一个值=O2="X"- 或者实际上任何返回布尔值true/false值的表达式.

据我所知,这些自定义脚本中列出的引用有点奇怪,应用如下......

如果它是您所选范围内的单元格,则它将更改为"正在突出显示的单元格".

如果它是所选范围之外的单元格,则它会更改为"该位置,加上与当前单元格到所选范围左上角的偏移量相同的偏移量".

也就是说,如果您的范围是A1:B2,则上述内容与在每个单元格上设置单独格式设置相同,如下所示:

A1 =O2="X"
A2 =O3="X"
B1 =P2="X"
B2 =P3="X"
Run Code Online (Sandbox Code Playgroud)

您还可以指定固定参考,例如=$O$2="X"- 将检查所选范围内所有单元格的特定单元格O2.


wes*_*cpy 5

(2017年2月)正如另一个答案所述,Google表格现在允许用户直接从用户界面添加条件格式,无论是在台式机/笔记本电脑,Android还是iOS设备上.

同样,使用Google表格API v4(及更新版本),开发人员现在可以编写CRUD条件格式规则的应用程序.查看指南样本页面以获取更多详细信息以及参考文档(搜索{add,update,delete}ConditionalFormatRule).该指南以此Python片段为特色(假设文件ID为SHEET_IDSHEETSAPI服务端点):

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()
Run Code Online (Sandbox Code Playgroud)

除了Python之外,Google API还支持各种语言,因此您可以选择.无论如何,该代码样本格式化一张工作表(见下图),使得年龄小于中位年龄的人以浅红色突出显示,而中位数以上的人则以红色字体显示.

条件格式化示例


公共服务声明

最新的Sheets API提供旧版本中不可用的功能,即为开发人员提供对Sheet的编程访问,就像使用用户界面一样(条件格式[!],冻结行,单元格格式化,调整行/列大小,添加数据透视表,创建图表等).

如果您是API的新用户,并希望查看使用API​​的更长,更一般的"真实世界"示例,我已经创建了各种视频和相关的博文:

正如您所知,Sheets API主要用于如上所述的面向文档的功能,但是要执行文件级访问,例如上传和下载,导入和导出(与上载和下载相同,但转换为各种格式),请改用Google Drive API.使用Drive API的示例:

  • 将Google表格导出为CSV(仅限博客文章)
  • "穷人的纯文本到PDF"转换器(仅限博客文章)(*)

(*) - TL; DR:将纯文本文件上传到云端硬盘,导入/转换为Google文档格式,然后将该文档导出为PDF格式.上面的帖子使用Drive API v2; 这个后续岗位描述迁移到云端硬碟API V3,这里是一个视频组合这两个"穷人的转换器"的帖子.


Jom*_*n68 5

使用最新的Sheet API,您可以以编程方式向工作添加条件格式规则以进行突出显示。

您可以添加自定义公式规则,将 A 列中的背景颜色设置为绿色,其中 O 列是“X”,如下所示:

function applyConditionalFormatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  var numRows = sheet.getLastRow();
  var rangeToHighlight = sheet.getRange("A2:A" + numRows);
  var rule = SpreadsheetApp.newConditionalFormatRule()
      .whenFormulaSatisfied('=INDIRECT("R[0]C[14]", FALSE)="X"')
      .setBackground("green")
      .setRanges([rangeToHighlight])
      .build();

  var rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
}
Run Code Online (Sandbox Code Playgroud)

条件格式适用的范围是从第 2 行到工作表中最后一行的 A 列。

自定义公式为:

=INDIRECT("R[0]C[14]", FALSE)="X"
Run Code Online (Sandbox Code Playgroud)

这意味着在所选范围列的右侧移动 14 列并检查其值是否为“X”。

O 列是 A 列右侧的 14 列。