2025年10月11日 星期六

透過Excel讀寫Google試算表,解決中文亂碼與日期格式問題

 您可以透過Excel,直接將資料寫入或讀取Google試算表,但在過程中可能會遇到中文變亂碼,以及回傳時間為ISO 8601日期格式的問題。本文將引導您如何解決這些問題,並順利完成資料串接。

事前準備

要將Excel與Google試算表連結,您需要先在Google Apps Script中部署一個網路應用程式,並取得其URL。您可以參考相關教學文章,了解如何部署Google網路應用程式。[1]

解決中文亂碼

在Excel中透過VBA將中文資料傳送到Google試算表時,若未經處理,很容易會變成亂碼。

  • 問題原因: 這是因為在資料傳輸過程中,中文字元的編碼未被正確處理。

  • 解決方法: 使用UrlEncode函式將中文字串進行編碼轉換,即可解決亂碼問題。這個函式可以將中文轉換為URL安全的格式,確保資料在傳輸過程中不會出錯。

處理ISO 8601日期格式

當您從Google試算表讀取資料時,可能會發現日期時間的格式是ISO 8601標準格式,這是一種國際通用的日期和時間表示方法,但可能與您習慣的格式不同。[2][3]

  • 問題原因: Google試算表預設會使用ISO 8601格式來處理日期與時間。[4]

  • 解決方法:

    1. 在Google Apps Script中處理: 您可以在Google Apps Script中撰寫程式碼,在回傳資料前,就先將日期時間轉換成您需要的格式。

    2. 在Excel中處理: 也可以在Excel VBA中,加入處理ISO 8601格式的函式,將讀取到的日期時間字串轉換為Excel可辨識的日期格式。

GET與POST方法的差異

在與Google Apps Script溝通時,您可以使用GET或POST方法來傳遞資料。

  • GET:

    • 會將資料附加在URL後面,格式為?key1=value1&key2=value2

    • 由於URL長度限制,不適合傳遞大量資料。

    • 在VBA中,使用GET方法時,需將要傳遞的資料字串串接在URL後面。

  • POST:

    • 將資料放在請求的主體中傳遞,較為安全,且沒有資料長度限制。

    • 在VBA中,使用POST方法時,需將資料放在send方法的參數中。

在處理中文資料時,建議使用POST方法,並搭配UrlEncode函式,能更穩定地避免亂碼問題。

讀取Google試算表資料

您可以透過Google Apps Script的doGet函式來讀取試算表中的資料。[5]

  1. doGet函式中,撰寫程式碼讀取您需要的儲存格範圍。

  2. 將讀取到的資料轉換為JSON格式。

  3. 透過ContentService將JSON資料回傳。

  4. 在Excel VBA中,使用GET方法呼叫此URL,即可取得JSON格式的資料。

  5. 再透過字串處理的方式,將JSON資料解析並填入Excel儲存格中。

透過上述步驟,您就能夠順利在Excel與Google試算表之間進行資料的讀寫,並有效解決中文亂碼和日期格式的問題。



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

透過Excel讀寫Google試算表,解決中文亂碼與日期格式問題

  您可以透過Excel,直接將資料寫入或讀取Google試算表,但在過程中可能會遇到中文變亂碼,以及回傳時間為ISO 8601日期格式的問題。本文將引導您如何解決這些問題,並順利完成資料串接。 事前準備 要將Excel與Google試算表連結,您需要先在Google Apps ...