iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

純筆記 python
純分享 App Script


確認 Odoo 上一筆匯入時間:從 Google Sheets 獲取最後匯入的時間戳。
獲取 Odoo 資料:通過 API 獲取最新的出貨數據,限制在上次匯入時間到發出命令前 10 分鐘的範圍。
分批匯入資料:將數據分成 50 筆一批匯入 Google Sheets 或 Odoo 系統,確保不影響之前的資料。
通知管理員:一旦資料更新完成,發送電子郵件給 3 位管理員,告知新更新的資料,並在完成時發送總結。

設置 Google Sheets API 認證 是實現應用程式與 Google Sheets 互動的第一步,尤其是像 Google Apps Script 或 Python 等腳本需要使用 Google Sheets API 來讀取或寫入資料。以下是設定 Google Sheets API 認證的步驟:

步驟 1:建立 Google Cloud Project

  1. 進入 Google Cloud Console:前往 Google Cloud Console
  2. 創建新專案
    • 點擊右上角的 選擇專案,然後點擊 新建專案
    • 給你的專案取個名字(如 “Google Sheets Integration”)。
    • 點擊 創建

步驟 2:啟用 Google Sheets API

  1. 進入 API 服務界面

    • 在 Google Cloud Console 中選擇你的專案後,點擊左側的 API 與服務 > 啟用 API 與服務
  2. 搜尋 Google Sheets API

    • 在搜尋欄輸入 Google Sheets API,點擊結果,然後點擊 啟用
  3. 啟用 Google Drive API(可選,若需與 Google Drive 交互)

    • 重複上一步,在搜尋欄輸入 Google Drive API,然後點擊 啟用

步驟 3:設置 OAuth 認證

  1. 進入憑證界面

    • API 與服務 的主頁面,點擊左側的 憑證 選項。
    • 點擊 創建憑證 > OAuth 客戶端 ID
  2. 設置 OAuth 同意畫面

    • 在創建 OAuth 客戶端之前,系統會要求你設置 OAuth 同意畫面
    • 選擇 外部(如果你的應用會被多人使用)或 內部(只有 Google Workspace 用戶使用)。
    • 填寫應用名稱、用戶支持郵箱,然後點擊 保存並繼續
  3. 創建 OAuth 憑證

    • 在憑證類型中選擇 應用程式類型(如:桌面應用程式、Web 應用程式等)。
    • 完成後,系統會生成 OAuth 2.0 客戶端 ID客戶端密鑰,下載這些資訊並安全存放。

步驟 4:生成服務帳戶(若使用服務帳戶)

如果您想要跳過用戶授權,而是直接與 Google Sheets 進行服務對服務的互動(如後端腳本使用),可以設置服務帳戶。

  1. 創建服務帳戶

    • 憑證 頁面,點擊 創建憑證 > 服務帳戶
    • 輸入服務帳戶名稱(例如 "sheets-service-account")。
    • 給該帳戶分配角色(例如:編輯者 以便寫入數據)。
  2. 生成服務帳戶金鑰

    • 選擇 JSON 格式,並下載服務帳戶金鑰到你的電腦,這個文件將用來在 Python 或其他語言中進行 API 認證。
  3. 分享 Google Sheets 給服務帳戶

    • 打開你要與 Google Sheets API 交互的 Google Sheets 文件。
    • 點擊右上角的 分享 按鈕。
    • 將服務帳戶的電子郵件地址(在 JSON 文件中找到)添加為 查看者編輯者,以便讓服務帳戶能夠訪問該文件。

步驟 5:使用 OAuth 2.0 授權 (Python 範例)

使用 OAuth 2.0 認證與 Google Sheets 交互,你可以使用 Python 和 gspread 庫來進行操作。

Python 依賴安裝

pip install gspread oauth2client

Python 程式碼範例(使用服務帳戶)

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# 定義 API 認證範圍
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]

# 使用下載的 JSON 憑證進行授權
creds = ServiceAccountCredentials.from_json_keyfile_name('path-to-your-service-account-file.json', scope)

# 授權並打開 Google Sheets
client = gspread.authorize(creds)

# 打開特定的工作表
sheet = client.open("Your Google Sheet Name").sheet1

# 讀取或寫入資料
data = sheet.get_all_records()  # 讀取所有資料
sheet.update_cell(1, 1, "Updated Data")  # 更新特定單元格

Python 程式碼範例(使用 OAuth 用戶授權)

這種方式要求用戶在第一次授權時手動同意,適合 Web 應用或桌面應用。

from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run_flow
import gspread

# Google OAuth 認證的參數
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'

# 設置 OAuth 流程
flow = OAuth2WebServerFlow(client_id, client_secret, scope, redirect_uri=redirect_uri)

# 授權
storage = Storage('credentials.json')  # 保存憑證
credentials = storage.get()

if not credentials or credentials.invalid:
    credentials = run_flow(flow, storage)

# 使用憑證進行授權
gc = gspread.authorize(credentials)

# 打開 Google Sheets
worksheet = gc.open("Your Google Sheet Name").sheet1

# 操作資料
worksheet.update_acell('A1', 'Hello World!')

步驟 6:驗證與使用

  • 完成以上設置後,您可以使用 Google Sheets API 與 Sheets 進行互動。
  • 在開發過程中,確保 API 認證金鑰妥善保管,並將正確的權限分配給服務帳戶或 OAuth 用戶。

總結

  1. 創建 Google Cloud Project 並啟用 Google Sheets API
  2. 創建 OAuth 憑證或服務帳戶憑證。
  3. 使用 OAuth 2.0 或服務帳戶進行 API 認證,並與 Google Sheets 交互。
  4. 使用 gspread 等庫在 Python 中訪問和修改 Google Sheets 的數據。

這樣設置完成後,您可以輕鬆通過 Python 腳本與 Google Sheets 進行資料互動。


上一篇
Odoo 建立退貨流程
下一篇
EDI code (reference page)
系列文
挑戰CRM客戶支援系統搬到Odoo的跨平台RPA工程31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言