簡體   English   中英

通過標題名稱訪問 Google 電子表格數據

[英]Accessing Google Spreadsheet data via header names

Google 電子表格 API 可讓您使用標題名稱向電子表格添加行, 此處描述此過程

然而,該文檔僅給出了一個簡單案例的示例,其中標題文本由小寫文本(或符合表達式 [a-z0-9] 的文本)組成。

我的應用程序要求我能夠為文本設置任意標題名稱(即那些不一定適合上述表達式的名稱)。 通過大量實驗,我發現通常不支持特殊字符和符號(句點除外)。 要訪問使用包含特殊字符的標題行的電子表格,必須使用刪除了特殊字符的標題文本。

這些轉換沒有記錄在案,我主要是通過反復試驗找到它們的。

例如,要通過 API 訪問標題為'Foo Bar'的列,需要將標題文本轉換為'foobar' 同樣, 'Foo.Bar'變成'foo.bar'

一些特殊字符也必須刪除,但是我的代碼中不斷出現極端情況。

需要對實際標題文本進行哪些轉換才能通過 API 訪問它?

同樣對於這個電子表格,標題文本'País''país'似乎不起作用。 我懷疑它與非 ASCII 字符'í'

任何建議將不勝感激。

您必須記住,在使用“列表提要”時,它使用 XML 元素來分隔每個值,並從工作表中的第 1 行獲取字段的名稱。 因此,名稱的限制是 XML 元素名稱的限制。 有關於它的XML.com文章在這里

至於他們用於將各種標題單元格值轉換為有效 XML 元素名稱的確切算法,我從未見過 Google 指定這一點(即使人們之前已經要求澄清)。 然而,人們可能會想象它是這樣的:

foreach char in cell.value {
   if (isAllowed(char)) {
      name += char;
   }
}
return name;

當然,他們確實傾向於省略空格(例如)而不是將它們(這將是非常合理的)轉換為下划線。

現在關於 ASCII 集之外的字符......

如果您的 í 是“LATIN SMALL LETTER I WITH ACUTE”,那么它的 Unicode 代碼點是 U+00ED,並且它在 XML-land 中編寫為 &#xED。 因此,它是 XML 名稱的有效字符。 http://www.w3.org/TR/REC-xml/#NT-NameChar似乎是一個有效的NameStartChar

 [4]    NameStartChar      ::=      ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
 [4a]       NameChar       ::=      NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
 [5]    Name       ::=      NameStartChar (NameChar)*

如果他們確實有上述算法,那么 &#xED 應該是“in”。 但是,我會密切關注您發送電子表格 API 以及它發送回給您的編碼。 我不會讓谷歌在這方面有錯誤。

您當然可以做一個實驗:使用 Google Apps 用戶界面將值放在工作表的標題行中,然后對列表提要執行 GET,以查看 XML 的實際結果。 (但我希望您到目前為止一直在實驗中使用它)。

祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM