如何通过 Google App Script 获取单元格编辑历史记录?
How to get cell edit history by Google App Script?
我有一个 Google 点差sheet。当我在任何单元格上单击鼠标右键时,我可以从上下文菜单中选择 Show edit history
。
之后我可以在弹出窗口中看到编辑历史记录 window。
我的问题是如何通过脚本从单元格中获取这些数据?
我试图通过检查选项找到解决方案并在此处找到预期数据:
<div class="docs-blameview-authortimestamp">
<div class="docs-blameview-author">My name
</div>
<div class="docs-blameview-timestamp">May 9, 11:56 AM
</div>
</div>
关于如何将数据导入某些 Google sheet 的任何建议?
已更新
我正在继续寻找解决方案。
当我使用 Chrome DevTools 检查此操作(至 show edit history
)时,我在“网络”选项卡上发现此请求:
fetch("https://docs.google.com/spreadsheets/d/1xVrzBezPzOmZC7Vap-reuNcWXZx_0qONbZ67pBiHVkQ/blame?token=AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg%3A1589033535890&includes_info_params=true", {
"headers": {
"accept": "*/*",
"accept-language": "en-US,en;q=0.9",
"content-type": "multipart/form-data; boundary=----WebKitFormBoundaryFpwmP3acru2z5xQc",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-build": "trix_2020.18-Tue_RC02",
"x-client-data": "CI62yQEIpLbJAQipncoBCNCvygEIvLDKAQjttcoBCI66ygEYmr7KAQ==",
"x-rel-id": "6a4.4ffb56e6.s",
"x-same-domain": "1"
},
"referrer": "https://docs.google.com/spreadsheets/d/1xVrzBezPzOmZC7Vap-reuNcWXZx_0qONbZ67pBiHVkQ/edit",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"selection\"\r\n\r\n[30710966,[null,[null,[null,\"629843311\",9,1],[[null,\"629843311\",9,10,1,2]]]]]\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"clientRevision\"\r\n\r\n478\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"includeDiffs\"\r\n\r\ntrue\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc--\r\n",
"method": "POST",
"mode": "cors",
"credentials": "include"
});
我认出了一些参数的含义。我不确定更正...
查询字符串参数
/* token: AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg:1589033535890
AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg // Probably it takes from user
1589033535890 // Timestamp of current session of current user
includes_info_params: true // I think that's what gets the user data and editing time of the cell
表单数据:
/*
selection:
[30710966, // Spreadsheet identificator (Any idea, how to get it???)
[null,[null,
[null,
"629843311", // Sheet ID in string
9, // cell's row - 1
1], // cell's column - 1
[[null,
"629843311" // Sheet ID in string
,9 // cell's row - 1
,10 // cell's row
,1 // cell's column - 1
,2 // cell's column
]]]]]
clientRevision: 478 // Edit step number (How to get it???)
includeDiffs: true // True shows last edition / false - look at previous steps
*/
我认为可以创建自定义提取和获取 blob。然后提取单元格最后一个版本的最后编辑者姓名和时间戳。
可惜我手艺不好。我只是在学习。
有人可以帮我解决这个问题吗?
或许您可以通过 Drive API、https://developers.google.com/drive/api/v2/reference/revisions 获取 clientRevisions 信息。
你说的电子表格ID,30710966似乎每个电子表格都很常见。我有一个相同的字符串。
我认为你非常接近它。
对于逆向工程,我认为应该可以通过多种方式访问对所有人开放的信息。如果google为此提供一些API就太好了,我相信他们正在准备它,因为这是一个相对较新的功能。
如果您准备好解决这么多麻烦,一个更简单的解决方案是推出您自己的编辑历史记录。只需通过 onEdit 触发器(常规或已安装)记录每次编辑。然后在需要的时候取回它。
我有一个 Google 点差sheet。当我在任何单元格上单击鼠标右键时,我可以从上下文菜单中选择 Show edit history
。
之后我可以在弹出窗口中看到编辑历史记录 window。
我的问题是如何通过脚本从单元格中获取这些数据?
我试图通过检查选项找到解决方案并在此处找到预期数据:
<div class="docs-blameview-authortimestamp">
<div class="docs-blameview-author">My name
</div>
<div class="docs-blameview-timestamp">May 9, 11:56 AM
</div>
</div>
关于如何将数据导入某些 Google sheet 的任何建议?
已更新
我正在继续寻找解决方案。
当我使用 Chrome DevTools 检查此操作(至 show edit history
)时,我在“网络”选项卡上发现此请求:
fetch("https://docs.google.com/spreadsheets/d/1xVrzBezPzOmZC7Vap-reuNcWXZx_0qONbZ67pBiHVkQ/blame?token=AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg%3A1589033535890&includes_info_params=true", {
"headers": {
"accept": "*/*",
"accept-language": "en-US,en;q=0.9",
"content-type": "multipart/form-data; boundary=----WebKitFormBoundaryFpwmP3acru2z5xQc",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-build": "trix_2020.18-Tue_RC02",
"x-client-data": "CI62yQEIpLbJAQipncoBCNCvygEIvLDKAQjttcoBCI66ygEYmr7KAQ==",
"x-rel-id": "6a4.4ffb56e6.s",
"x-same-domain": "1"
},
"referrer": "https://docs.google.com/spreadsheets/d/1xVrzBezPzOmZC7Vap-reuNcWXZx_0qONbZ67pBiHVkQ/edit",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"selection\"\r\n\r\n[30710966,[null,[null,[null,\"629843311\",9,1],[[null,\"629843311\",9,10,1,2]]]]]\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"clientRevision\"\r\n\r\n478\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc\r\nContent-Disposition: form-data; name=\"includeDiffs\"\r\n\r\ntrue\r\n------WebKitFormBoundaryFpwmP3acru2z5xQc--\r\n",
"method": "POST",
"mode": "cors",
"credentials": "include"
});
我认出了一些参数的含义。我不确定更正...
查询字符串参数
/* token: AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg:1589033535890
AC4w5VhQLkaKWPQT2sGl8uO8MkXyW1N7hg // Probably it takes from user
1589033535890 // Timestamp of current session of current user
includes_info_params: true // I think that's what gets the user data and editing time of the cell
表单数据:
/*
selection:
[30710966, // Spreadsheet identificator (Any idea, how to get it???)
[null,[null,
[null,
"629843311", // Sheet ID in string
9, // cell's row - 1
1], // cell's column - 1
[[null,
"629843311" // Sheet ID in string
,9 // cell's row - 1
,10 // cell's row
,1 // cell's column - 1
,2 // cell's column
]]]]]
clientRevision: 478 // Edit step number (How to get it???)
includeDiffs: true // True shows last edition / false - look at previous steps
*/
我认为可以创建自定义提取和获取 blob。然后提取单元格最后一个版本的最后编辑者姓名和时间戳。
可惜我手艺不好。我只是在学习。 有人可以帮我解决这个问题吗?
或许您可以通过 Drive API、https://developers.google.com/drive/api/v2/reference/revisions 获取 clientRevisions 信息。 你说的电子表格ID,30710966似乎每个电子表格都很常见。我有一个相同的字符串。 我认为你非常接近它。 对于逆向工程,我认为应该可以通过多种方式访问对所有人开放的信息。如果google为此提供一些API就太好了,我相信他们正在准备它,因为这是一个相对较新的功能。
如果您准备好解决这么多麻烦,一个更简单的解决方案是推出您自己的编辑历史记录。只需通过 onEdit 触发器(常规或已安装)记录每次编辑。然后在需要的时候取回它。