為了演示腳本如何在 Workiva 中運作,我們之前建立了一個腳本,用來更新電子表格 中的一個單元格。本文以該範例為基礎,示範如何使用基於令牌的驗證執行相同的操作。
註: 目前僅可透過 Customize Workiva 使用腳本。深入了解。
要求
- 您的工作區必須啟用 Workiva Scripting。進一步了解 Workiva Scripting。
- 創建或編輯腳本需要Script Editor 角色。
步驟 1:建立指令碼檔案
此腳本是範例中使用的腳本的變體:更新試算表的腳本 文章。此版本保護用戶 ID 和用戶秘密,並獲得一個令牌,允許代碼驗證到 Workiva。
若要在您的工作區建立腳本,請遵循下列步驟:
- 從「首頁」,按一下+ 建立 => 腳本 。
- 在右側輸入指令碼的名稱和簡短說明。
- 到螢幕中間的腳本編輯器,刪除任何現有的程式碼。複製並貼入以下內容:
# 歡迎使用 Workiva Scripting import requests import json import os from WorkivaAuth import WorkivaAuth OUTPUT_SS_ID = os.getenv('OUTPUT_SS_ID') OUTPUT_SHEET_ID = os.getenv('OUTPUT_SHEET_ID') SS_API_URL = 'https://api.app.wdesk.com/platform/v1/spreadsheets/' class SSApi: def __init__(self, accessToken, ssId, sheetId): self._accessToken = 'Bearer ' + accessToken self._headers = {'Authorization': self._accessToken} self._ssId = ssId self._sheetId = sheetId def updateRange(self, range, values): url = SS_API_URL + self._ssId + "/sheets/" + \ self._sheetId + "/values/" + range requests.put(url, headers=self._headers, data=json.dumps(values)) def updateSS(outputSSApi: SSApi): values = [] values.append(["Hello World"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS updated!!!") main() - 按一下「儲存」(Save)。
步驟 2:在您的本機上產生相依性
當您閱讀本節內容時,您會發現此變體不包含任何根據用戶端 ID 和用戶端秘密生成令牌的程式碼。相反,程式碼會被抽象為一個本地建立的函式庫,名為WorkivaAuth ,然後與請求庫一起打包到dependencies.zip bundle 中。
若要跟進,請在本機上開啟終端機,並完成下列步驟:
- 建立一個名為Creds 的資料夾。
mkdir Creds
- 進入Creds 資料夾。
cd Creds
- 建立requirements.txt 檔案,內容如下:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- 建立一個名為WorkivaAuth 的資料夾.
mkdir WorkivaAuth
- 步入WorkivaAuth 資料夾。
cd WorkivaAuth
- 在 WorkivaAuth 資料夾中,建立setup.py 檔案,內容如下:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- 在 WorkivaAuth 資料夾中,建立另一個資料夾,命名為WorkivaAuth.
mkdir WorkivaAuth
注意: 這不是打錯。正確路徑為./WorkivaAuth/WorkivaAuth 。
- 步入您剛剛建立的WorkivaAuth 資料夾。
cd WorkivaAuth
- 在WorkivaAuth/WorkivaAuth 資料夾中建立一個空的__init__.py 檔案和WorkivaAuth.py 檔案,內容如下:
# WorkivaAuth import requests import json # 用實際的 URL AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token「 # 定義缺少的變量 CLIENT_ID CLIENT_ID = 」your_client_id「 # 定義缺少的變量 CLIENT_SECRET CLIENT_SECRET = 」your_client_secret" def getWorkivaAuthToken(): data = { 'client_id':CLIENT_ID, 'client_secret':CLIENT_SECRET, 'grant_type': 'client_credentials' }# 用適當的標頭取代 headers = { 'Content-Type': 'application/x-www-form-urlencoded', } tokenRes = requests.post( AUTH_URL, data=data, headers=headers ) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token']現在您應該有以下資料夾結構:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | | | |-- __init__.py | | | |-- WorkivaAuth.py | | |-- setup.py |-- requirements.txt
-
回到Creds 資料夾。
cd ..
cd ..
- 執行下列指令以產生您的WorkivaAuth 發行套件。
cd WorkivaAuth
python3 setup.py sdist
cd ...
-
pip3 install --target ./dependencies --requirement requirements.txt 將依賴安裝到新的Dependencies 目錄中。
- 建立dependencies.zip 檔案。
cd dependencies
zip -r ../dependencies.zip .
cd .
在本文的最後部分,我們將告訴您如何將此檔案上傳至第 1 步 中建立的腳本。
第 3 步:將依賴檔上傳至 Workiva
現在您已建立您的依賴檔案,您將返回 Workiva 並將其作為原始碼上傳。
- 轉到 Workiva Scripting 並開啟您在本文較早前建立的腳本檔案 。
- 移至左側的Sources 面板;在當前檔案下方的空白處按一下滑鼠右鍵,然後選擇Upload Source Files 。
- 選擇瀏覽 ,並找出您在上一步中建立的dependencies.zip 檔案。
- 上傳dependencies.zip 檔案完成。
您應該會看到一個不可選擇的來源,名為dependencies.zip ,表示您現在已準備好在不暴露任何憑證的情況下驗證進入 Workiva!