舉例來說,假設您正在嘗試為銷售機構建立解決方案。銷售機構分為多個區域,每個區域都有專屬的區域管理員。BigQuery 中的銷售資料集會依區域和日期顯示銷售額。
建議的解決方案將提供單一資訊主頁,可讓區域管理員僅查看所屬區域的銷售資料。
需求條件
- 資訊主頁檢視者必須使用 Google 帳戶登入。
- 在使用者的電子郵件和他們有權存取的資料/資料列之間提供對應。
- 服務帳戶將用於存取 BigQuery 資料。因此帳單會由資訊主頁供應商集中處理並管理。
限制
- 每當初次觀看時,資訊主頁要求每位檢視者都必須進行一次性授權。
- 檢視者無法編輯資訊主頁或與他人共用。
- 如果您是 Workspace 客戶,且管理員已停用與「任何知道連結的使用者」共用雲端硬碟檔案的功能,請移除共用限製或在 Gmail.com 帳戶中開發解決方案。
解決方法
請完成下列所有步驟來實作解決方案。
建立新的社群連接器
參閱「社群連接器的運作方式」一文,並完成社群連接器程式碼研究室,即可開始使用。使用開發人員工具建立連接器,可以更快、更輕鬆地開發程序。
編寫連接器程式碼
getAuthType()
應傳回NONE
。getConfig()
應傳回空白設定。- 選用:如需設定資訊主頁的特定輸入資料,可以在這裡要求使用者輸入內容。
getSchema()
應會傳回查詢的結構定義。- 選用:您可以在 SQL 查詢中,或是使用計算的欄位做為結構定義的一部分,新增自訂欄位和計算。
- 「
getData()
」將在後續步驟完成。
更新資訊清單
查看資訊清單參考資料並完成資訊清單,完整列出所有必要資訊,包括:
- 將
dataStudio.forceViewersCredentials
設為true
。 - 將
dataStudio.advancedServices.data
設為true
。 - 針對
oauthScopes
,請新增https://www.googleapis.com/auth/userinfo.email
和https://www.googleapis.com/auth/script.external_request
。詳情請參閱「Apps Script 的授權範圍」。- 條件式:為連接器使用的服務新增所有相關範圍。
資訊清單應如下所示:
{
...
"dataStudio": {
"forceViewersCredentials": true,
"advancedServices": {
"data": true
},
...
}
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
實作服務帳戶
- 在您的 Google Cloud 專案中建立服務帳戶。這會是您的帳單專案。
- 請確保這個服務帳戶具備 Cloud 專案中的 BigQuery 存取權。
- 必要的 Identity and Access Management (IAM) 角色:
BigQuery Data Viewer
、BigQuery Job User
- 必要的 Identity and Access Management (IAM) 角色:
- 下載 JSON 檔案,取得服務帳戶金鑰。將金鑰儲存在連接器專案的指令碼屬性中。
- 將 Apps Script 的 OAuth2 程式庫納入您的 Apps Script 專案。
- 為服務帳戶實作必要的 OAuth2 程式碼:
var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS'; var SERVICE_ACCOUNT_KEY = 'private_key'; var SERVICE_ACCOUNT_EMAIL = 'client_email'; var BILLING_PROJECT_ID = 'project_id'; /** * Copy the entire credentials JSON file from creating a service account in GCP. */ function getServiceAccountCreds() { return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS)); } function getOauthService() { var serviceAccountCreds = getServiceAccountCreds(); var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY]; var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL]; return OAuth2.createService('RowLevelSecurity') .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') .setTokenUrl('https://accounts.google.com/o/oauth2/token') .setPrivateKey(serviceAccountKey) .setIssuer(serviceAccountEmail) .setPropertyStore(scriptProperties) .setCache(CacheService.getScriptCache()) .setScope(['https://www.googleapis.com/auth/bigquery.readonly']); }
導入getData()
- 建構 BigQuery 查詢。
- 使用電子郵件查詢電子郵件和資料之間的對應關係。
- 使用 JOIN 和/或 WHERE 子句篩選資料。
- 取得有效使用者的電子郵件 (使用者身分參考)。
- 使用 Looker Studio Advanced Services 從 getData 傳回查詢設定。
- 傳送建構的查詢、帳單專案和服務帳戶 OAuth 權杖。
- 條件式:如果您是透過連接器
getConfig
接收使用者輸入內容,請將輸入內容加入做為 BigQuery 參數。
建立資訊主頁
- 瞭解連接器部署和版本的運作方式。
- 為連接器建立實際工作環境部署。
- 使用實際工作環境部署作業,在 Looker Studio 中建立資料來源和新報表。
- 在報表中新增所有表格和圖表。
- 您現在可以與使用者分享資訊主頁。
為使用者提供資訊主頁
- 與選取的使用者或「知道連結的使用者」共用連接器指令碼。
- 與選取的使用者或「知道連結的使用者」共用資訊主頁。
- 選用:使用網址縮短服務為資訊主頁網址建立短連結。將短版網址提供給使用者。這樣日後可以視需要替換資訊主頁網址。
- 選用:為報表設定 Google Analytics (分析),評估資訊主頁用量。