google-sheets - 如何在新的 Google 电子表格中将 gid 转换为 od*(工作表 ID)

标签 google-sheets google-spreadsheet-api gdata-api

我正在使用 Gdata api 更新 Google 电子表格单元格。 现在新的 Google 电子表格已经发布,gid 似乎超过了 8 位数。

以下是示例新工作表,sheet2 的 gid 是 1794189920。 https://docs.google.com/spreadsheets/d/1S6mvGGoOJa8JF6Qt6GGH5QT-X0HD4EjZhKNbihAwFuE/edit?usp=sharing

我尝试用下面的方法转换它们,但是没有用。

How to convert Google spreadsheet's worksheet string id to integer index (GID)?

感谢任何可以帮助阐明这一点或提出建议的人。

干杯。俊雅

最佳答案

好吧,这是一个贫民窟的答案,因为我对它一点也不满意,因为我真的不明白发生了什么,但也许它会对人们有所帮助,所以就这样..

我正在使用 ruby​​ google_drive gem,只是试图将电子表格中的所有工作表下载为 CSV 格式。为此,我必须将编码的 GID(我见过它称为“WID”)转换为真实的 GID。之前,我的 wid_to_gid 方法看起来像这样(从此处关于堆栈溢出的其他答案中记录):

def wid_to_gid(wid)
    wid.to_i(36) ^ 31578
end

为了处理 7 位数的 WID,我将其更改为:

def wid_to_gid(wid)
    wid_val = wid.length > 3 ? wid[1..-1] : wid
    xorval = wid.length > 3 ? 474 : 31578
    wid_val.to_i(36) ^ xorval
end

所以..这里发生了一些事情..我意识到(至少在我的电子表格上),对于 7 位 WID,我可以通过删除第一个字符,转换为基数 36,然后与 474 进行异或运算(不知道为什么是这个神奇的数字……抱歉)。

如果 WID 只有 3 位数字,那么旧的转换就有效(正如在堆栈溢出的许多其他答案中所详述的那样)。

对于我使用的电子表格,它有 3 个工作表。以下是每个的 WID 和 GID:

GID - WID
0          - od6
2019719111 - oxehkwt
1506531046 - oowy6v0

我真的只是想完成这件事,所以一旦它开始工作我就没有花更多的时间进行调查。如果其他人可以验证/拒绝此代码是否对他们有用,将不胜感激……如果它不起作用,也许它至少会给你一些想法!

关于google-sheets - 如何在新的 Google 电子表格中将 gid 转换为 od*(工作表 ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609688/

相关文章:

multithreading - Google Apps 脚本和表格 : appendRow() regularly overwrites the last row instead of appending a new row below

python - Google Sheets API HttpError 500 和 503

iphone - 在 objective-c 上使用youtube API获取元素

google-apps-script - Google 电子表格应用程序脚本库可以包含用户对话框吗?

javascript - Google 电子表格脚本编辑器中的 IEFE(立即执行函数表达式)

google-sheets - Google 电子表格中的一键式超链接

user-interface - 您可以在 Google 表格单元格中以编程方式生成按钮吗?

java - 如何在未经身份验证的情况下使用 Google Spreadsheet API Java 库获取公共(public) Google Spreadsheet 数据

java - 使用 Java 从 Google 日历服务读取 XML 响应

php - 获取特定 Google 日历的 Zend_GData 提要