用于从Google工作表网址

时间:2017-01-18 10:44:11

标签: javascript google-sheets google-docs

我希望Javascript正则表达式从Google表格网址中提取电子表格ID和工作表ID。 sheet.google.com电子表格的网址如下:https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0

This Link描述了用于提取电子表格ID和工作表ID的正则表达式。我在Javascript中尝试了它们,但它无法正常工作。这是我试过的代码:



var spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl);
var sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl);




3 个答案:

答案 0 :(得分:2)

假设Google电子表格ID超过15个字符,则正则表达式将如下所示。 GID可能在URL中提供,也可能不提供。

var resourceUrl = "https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0";

var matches = /\/([\w-_]{15,})\/(.*?gid=(\d+))?/.exec(resourceUrl);

if (matches) {
  console.log("Spreadsheet: " + matches[1]);
  console.log("Sheet: " + matches[3]);
}

答案 1 :(得分:2)

如果成功,exec()方法将匹配的字符放在其索引中。索引0是匹配字符的完整字符串。其他索引(1,2,...)是由括号分隔的正则表达式的部分匹配的字符,按它们出现的顺序排列。

您的正则表达式匹配URL字符串的较大部分,但ID是括号分隔的部分。在这两种情况下,您只有一对括号因此它们在索引1中。因此您想要的值在

 spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl)[1];
 sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl)[1];

(请注意两条说明末尾的 [1]

答案 2 :(得分:0)

仅查找 "/d/" 后面的部分有什么问题吗?

/.+\/d\/([^/]+)/

捕获组是id

相关问题