首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(扩展)如何使用扩展将自定义公式放入单元格?

(扩展)如何使用扩展将自定义公式放入单元格?
EN

Stack Overflow用户
提问于 2022-09-22 07:29:26
回答 2查看 241关注 0票数 1

我想把一个自定义的公式放在纸上使用扩展。这可以在Google和看上去像这样中实现。

我想使用gspread自动输入这个过程,类似于如何使用batch_update格式化多个单元格,我想使用它向多个单元格添加一个自定义公式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-23 06:36:39

我相信你的目标如下。

  • 您想要创建=indirect("Sheet1!B2")<>"hello"的条件格式规则,如果这是真的,则要将背景颜色设置为白色。
  • 您希望为Google电子表格中的所有单元格创建条件格式规则。
  • 您希望通过对python的扩展来实现这一点。

在本例中,下面的示例脚本如何?

示例脚本:

代码语言:javascript
运行
复制
spreadsheetId = "###" # Please set your Spreadsheet ID.
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet("Sheet2") # Please set your sheet name.

formula = '=indirect("Sheet1!B2")<>"hello"'
body = {
    "requests": [
        {
            "addConditionalFormatRule": {
                "index": 0,
                "rule": {
                    "ranges": [{"sheetId": sheet.id}],
                    "booleanRule": {
                        "condition": {
                            "type": "CUSTOM_FORMULA",
                            "values": [{"userEnteredValue": formula}],
                        },
                        "format": {
                            "backgroundColorStyle": {
                                "rgbColor": {"red": 1, "green": 1, "blue": 1}
                            }
                        },
                    },
                },
            }
        }
    ]
}
spreadsheet.batch_update(body)
  • 运行此脚本时,为“addConditionalFormatRule”中的所有单元格创建上述Sheet2。当Sheet1!B2不是hello时,"Sheet2“的所有单元格的背景色都是白色的。

参考文献:

添加:

关于你下面的答复,

我在你的基础上修改了我的剧本,效果很好。我只想知道是否可以为单独的单元格创建一个条件格式规则列表。这个是可能的吗?

您的预期目标是下面的示例脚本?

示例脚本:

代码语言:javascript
运行
复制
spreadsheetId = "###" # Please set your Spreadsheet ID.
sheetName = "Sheet2" # Please set your sheet name.
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
sheetId = sheet.id
service = build("sheets", "v4", credentials=client.auth)
res = service.spreadsheets().get(spreadsheetId=spreadsheetId, ranges=sheetName, fields="sheets(properties(gridProperties(rowCount,columnCount)))").execute()

row = res["sheets"][0]["properties"]["gridProperties"]["rowCount"]
column = res["sheets"][0]["properties"]["gridProperties"]["columnCount"]

formula = '=indirect("Sheet1!B2")<>"hello"'
requests = []
for i in range(row):
    for j in range(column):
        requests.append(
            {
                "addConditionalFormatRule": {
                    "index": 0,
                    "rule": {
                        "ranges": [
                            {
                                "sheetId": sheetId,
                                "startRowIndex": i,
                                "endRowIndex": i + 1,
                                "startColumnIndex": j,
                                "endColumnIndex": j + 1,
                            }
                        ],
                        "booleanRule": {
                            "condition": {
                                "type": "CUSTOM_FORMULA",
                                "values": [{"userEnteredValue": formula}],
                            },
                            "format": {
                                "backgroundColorStyle": {
                                    "rgbColor": {"red": 1, "green": 1, "blue": 1}
                                }
                            },
                        },
                    },
                }
            }
        )
spreadsheet.batch_update({"requests": requests})
  • 在这种情况下,为了检索工作表的行和列的值,使用了用于python的googleapis。所以,请添加from googleapiclient.discovery import build
  • 运行此脚本时,addConditionalFormatRule将在"Sheet2“的所有单元格中创建。但是,我认为上述脚本的结果是相同的。
  • 请小心
    • 运行此脚本时,addConditionalFormatRule将在"Sheet2“的所有单元格中创建。因此,例如,当使用默认工作表时,在1000行x 26列的所有单元格中都会创建许多条件格式规则。请小心这件事。
    • 如果要限制单元格,请手动设置rowcolumn
票数 0
EN

Stack Overflow用户

发布于 2022-09-23 01:25:37

您可以在工作表更新中使用valueInputOption='USER_ENTERED'参数。这基本上将输入到电子表格调用中,就像您自己手动输入它一样。在这里查看更多,https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption

使用sheets api:

代码语言:javascript
运行
复制
sheets_service = build('sheets', 'v4', credentials=auth.get_credentials())
response = sheets_service.spreadsheets().values().update(
                spreadsheetId='<ENTER SPREADSHEET ID HERE>', range='<ENTER CELL RANGE HERE>', 
                valueInputOption='USER_ENTERED', body='<YOUR CUSTOM FORMULA HERE>').execute()

展开:

代码语言:javascript
运行
复制
sh.values_update(
    'Sheet1!A2',
    params={
        'valueInputOption': 'USER_ENTERED'
    },
    body={
        'values': ...
    }
)

更新

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73810837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档