Google表格API:获取上次编辑的标签名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google表格API:获取上次编辑的标签名称相关的知识,希望对你有一定的参考价值。

我试图找出电子表格中的哪个标签最后一次更改。

我有一个谷歌工作表,多个用户共享多个标签。我可以检测到用户何时进行如下更改:

def testChanges(self):
    response = self.service.revisions().list(fileId='some-file-id').execute()
    revs = response.get('revisions',[])
    if not len(revs):
        return
    revID = revs[-1].get('id')
    response = self.service.revisions().get(
                            fileId='some-file-id',
                            revisionId=revID,
                            fields='kind, id, modifiedTime, lastModifyingUser'
                            ).execute()

我收到了回复:

{
  "kind": "drive#revision",
  "id": "12",
  "modifiedTime": "2018-09-17T20:10:41.330Z",
  "lastModifyingUser": {
    "kind": "drive#user",
    "displayName": "USER NAME",
    "me": true,
    "permissionId": "08921584708523400585",
    "emailAddress": "email.address@gmail.com"
  }

现在我需要处理用户刚刚更改的选项卡。我怎么能弄明白呢?我检查了Drive documentationSheets API,但到目前为止没有运气。

答案

我不相信这是REST API支持或可能的。您可能需要创建一个installed edit触发器,并使用它来记录edit event object(例如将其发布到URL,将其附加到某些“sentinel”电子表格等)。您可以将其与当前的revisions方法结合使用,以了解执行修改的人员(因为除非您在同一个GSuite域中,否则用户身份通常是受限制的信息)。

将数据写入指定电子表格的示例。

function installedEdit(e) {
  const edited = e.range,
        sheet = edited.getSheet();
  const row = [
    new Date(),         // Time of the edit
    e.source.getId(),   // id of the edited workbook.
    e.source.getName(),
    sheet.getName(),    // edited sheet name
    sheet.getSheetId(), // gridid for REST API
    edited.getA1Notation(),
    edited.oldValue !== undefined ? edited.oldValue : "",
    edited.value !== undefined ? edited.value : ""
  ];
  try { row.push(e.user.getEmail()); }
  catch (e) { row.push("Unknown User"); }
  // Log this row somehow
  SpreadsheetApp.openById("some spreadsheet id").getSheetByName("Edit log").appendRow(row);
}

您可以在独立的Apps脚本项目中创建此功能,并将programmatically install此功能作为您需要观看的各种电子表格的编辑触发器。

另一答案

您可以创建一个for循环来扫描所有选项卡(每隔几秒)并将所有这些选项卡的modifiedTime存储在一个表中。对循环进行编程,将每个选项卡的当前modifiedTime与上次扫描时的值进行比较。当存在不匹配时,这意味着当前选项卡被修改。

只是一个想法。

以上是关于Google表格API:获取上次编辑的标签名称的主要内容,如果未能解决你的问题,请参考以下文章

从 Google 电子表格请求 BigQuery API 会产生错误

将没有 api 的 Instagram 主题标签 json 放入谷歌表格的问题

如何在 google sheet api 中获取列标题及其名称的映射?

无需身份验证令牌即可访问 Google 电子表格 API

Google AdWords AdGroup API 脚本中的多个标签名称

在 Python 中获取 google 电子表格 api v4 中的工作表和最新工作表列表