5

我正在查看 CellEntry API (https://developers.google.com/gdata/javadoc/com/google/gdata/data/spreadsheet/CellEntry) 以了解如何向单元格,但看不到像“addComment()”这样的明显内容。

有人有想法吗?

谢谢

4

3 回答 3

4

使用 google sheet API v4,您可以使用电子表格.batchUpdate 设置注释。示例 JavaScript SDK:

var requests = [];
requests.push({
  "repeatCell": {
    "range": {
      "sheetId": yourSheetId,
      "startRowIndex": 1,
      "endRowIndex": 2,
      "startColumnIndex": 0,
      "endColumnIndex": 1
    },
    "cell": {
      note: "Your note"
    },
    "fields": "note"
  }
});

gapi.client.sheets.spreadsheets.batchUpdate({
  spreadsheetId: yourDocumentId,
  requests: requests
}).then(function(response) {
  console.log(response);
  callback();
});

于 2016-11-03T13:00:21.860 回答
2

基于Lars Gunnar Vik的答案,这里有一个 Python 示例。

相关的代码在这里:

    body = {
        "requests": [
            {
                "repeatCell": {
                    "range": {
                        "sheetId": 1704890600,  # this is the end bit of the url
                        "startRowIndex": 0,
                        "endRowIndex": 1,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1,
                    },
                    "cell": {"note": "Hey, I'm a comment!"},
                    "fields": "note",
                }
            }
        ]
    }
    result = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body)
        .execute()
    )

您可以通过重复列表中的对象来添加大量注释"requests": []

需要注意的一些重要事项是:

  • "sheetId"是 url 中的结束编号
  • 如果您想添加值和评论,我认为您需要分两次完成(我希望有人证明我错了!)

下面是一个写评论的完整程序:

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ["*", "https://www.googleapis.com/auth/spreadsheets"]

# The ID and range of a sample spreadsheet.
SAMPLE_SPREADSHEET_ID = "YOUR SPREADSHEET ID"


def main():
    """Shows basic usage of the Sheets API.
    Prints values from a sample spreadsheet.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists("token.pickle"):
        with open("token.pickle", "rb") as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                "credentials.json", SCOPES
            )
            try:
                creds = flow.run_local_server()
            except OSError as e:
                print(e)
                creds = flow.run_console()
        # Save the credentials for the next run
        with open("token.pickle", "wb") as token:
            pickle.dump(creds, token)

    service = build("sheets", "v4", credentials=creds)

    # add a comment
    body = {
        "requests": [
            {
                "repeatCell": {
                    "range": {
                        "sheetId": 1704890600,  # this is the end bit of the url
                        "startRowIndex": 0,
                        "endRowIndex": 1,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1,
                    },
                    "cell": {"note": "Hey, I'm a comment!"},
                    "fields": "note",
                }
            }
        ]
    }
    result = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body)
        .execute()
    )
    print("{0} cells updated.".format(result.get("totalUpdatedCells")))


if __name__ == "__main__":
    main()

您需要添加自己的电子表格 ID

于 2019-06-16T05:56:05.490 回答
1

根据谷歌的说法,它还没有在 API 中。

资源

于 2012-12-05T23:28:44.113 回答