2

구글 스프레드 시트 API의하자 당신은이 과정이 문서는 그러나 단지 헤더 텍스트가 만들어 간단한 경우의 예를 제공 here액세스 구글 스프레드 시트 데이터

설명하는 헤더 이름을 사용하여 스프레드 시트에 행을 추가 소문자 텍스트 (또는 표현식 [a-z0-9]에 해당하는 텍스트).

내 응용 프로그램에서는 텍스트에 임의의 헤더 이름 (위의 표현에 반드시 맞을 필요가없는 이름)을 설정할 수 있어야합니다. 많은 실험을 통해 특수 문자와 기호 (마침표 제외)는 일반적으로 지원되지 않는다는 것을 알아 냈습니다. 특수 문자가 포함 된 머리글 행을 사용하는 스프레드 시트에 액세스하려면 특수 문자가 제거 된 머리글 텍스트를 사용해야합니다.

이러한 변형은 documented이 아니며 대부분 시행 착오로 발견되었습니다.

예를 들어 API를 통해 'Foo Bar' 헤더가있는 열에 액세스하려면 헤더 텍스트를 'foobar'으로 변환해야합니다. 유사하게, 'Foo.Bar''foo.bar'이됩니다.

일부 특수 문자도 제거해야하지만 코드에서 대소 문자가 계속 표시됩니다.

API를 통해 실제 헤더 텍스트를 변환하려면 어떤 변환을해야합니까?

또한 spreadsheet의 경우 'País'에서 'país'으로의 헤더 텍스트 변환이 작동하지 않는 것 같습니다. 나는 그것이 어떤 제안이 크게 감사합니다 비 ASCII 문자 'í'

함께 할 수있는 뭔가가 생각한다.

+0

질문을 진술하십시오. 조금 혼란 스럽습니다. – user618677

답변

2

당신은 '목록 피드'를 사용하는 경우, 그것은 시트에 행 1 필드의 이름을 가지고, 각 값을 구분하는 XML 요소를 사용하여 기억하고있어. 따라서 이름의 한계는 XML 요소 이름에 대한 것입니다. XML.com에 대한 기사는 here입니다.

다양한 헤더 셀 값을 유효한 XML 요소 이름으로 변환하는 데 사용하는 정확한 알고리즘에 관해서는 Google에서이를 명시한 적이 한번도 없었습니다 (사람들이 이전에 설명을 요청 했음에도 불구하고). (예를 들어) 공간을 생략에 그들이 대신 밑줄 (매우 합리적인 것 같은)을 변환하는 경향이있다, 물론

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

그러나, 하나는 같은 것을 상상할 수 있습니다. 아스키 세트 이외의 문자에 대한 지금

... 당신의 난 "급성 라틴 SMALL LETTER 나는"인 경우

, 다음 유니 코드 코드 포인트 U + 00ED입니다, 그리고 그것은 XML-토지로 작성 & #xED로 따라서, 그것은 XML 이름에 대한 유효한 문자입니다. http://www.w3.org/TR/REC-xml/#NT-NameChar에서, 들이 위의 같은 알고리즘을 수행 한 후 & #xED가 '에'이되어야한다고 경우 유효한 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)* 

을 것 같다 않습니다.그러나 스프레드 시트 API를 보내는 인코딩에주의를 기울여야하며 다시 보내고 있습니다. 나는 그 점에서 버그를 낳기 위해 Google을 지나치지 않았습니다.

물론 실험을 할 수 있습니다. Google Apps 사용자 인터페이스를 사용하여 시트의 헤더 행에 값을 입력하고 목록 피드의 GET을 수행하여 XML이 실제로 어떻게 발생하는지 확인합니다. (그러나 나는 당신이 지금까지 실험에서 이것을 사용 해왔음을 기대합니다).

행운을 빈다.

+0

제안 해 주셔서 감사합니다. 나는 지금까지 파이썬 클라이언트를 주로 실험 해왔다. 내가 설명한 알고리즘과 비슷한 알고리즘을 가지고 있으며, 내가 만나는 어떤 코너 케이스에서도 알고리즘을 계속 변경합니다. 그러나 유니 코드 문자 U + 00ED가 허용되지 않는 것 같아서 놀랐습니다. 어쩌면 표현과 관련이 있을지도 모릅니다. 나는 그것이 사실인지보기 위해 노력할 것이다. –

관련 문제