為了演示腳本如何在 Workiva 中運作,我們之前建立了一個腳本,用來更新電子表格 中的一個單元格。本文以該範例為基礎,示範如何使用基於令牌的驗證執行相同的操作。
註 :目前僅可透過自訂 Workiva 使用腳本。深入了解。
要求
- 您的工作區必須啟用 Workiva Scripting。進一步了解 Workiva Scripting。
-
Script Editor 角色需要用於創建或編輯腳本。
步驟 1:建立指令碼檔案
此腳本是範例中使用的腳本的變體:更新試算表的腳本 文章。此版本保護用戶 ID 和用戶秘密,並獲得一個令牌,允許代碼驗證到 Workiva。
若要在工作區中建立指令碼,請遵循下列步驟:
- 從「首頁」,按一下+ 建立 => 腳本 。
- 在右側輸入指令碼的名稱和簡短說明。
-
前往螢幕中間的腳本編輯器,刪除任何現有的程式碼。複製並貼上下列內容:
# Welcome to 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 # Replace with the actual URL AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Define the missing variable CLIENT_ID CLIENT_ID = "your_client_id" # Define the missing variable CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Replace with the appropriate headers 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 WorkivaAuthpython3 setup.py sdistcd .. -
將依賴項目安裝到新的相依性目錄中。
pip3 install --target ./dependencies --requirement requirements.txt -
建立dependencies.zip 檔案。
cd dependencieszip -r ../dependencies.zip .cd ..
在本文的最後部分,我們將告訴您如何將此檔案上傳至第 1 步 中建立的腳本。
第 3 步:將依賴檔上傳至 Workiva
現在您已建立您的依賴檔案,您將返回 Workiva 並將其作為原始碼上傳。
- 轉到 Workiva Scripting 並開啟您在本文較早前建立的腳本檔案 。
- 移至左側的Sources 面板;在當前檔案下方的空白處按一下滑鼠右鍵,然後選擇Upload Source Files 。
- 選擇瀏覽 ,並找出您在上一步中建立的dependencies.zip 檔案。
- 上傳dependencies.zip 檔案完成。
您應該會看到一個不可選擇的來源,名為dependencies.zip ,表示您現在已準備好在不暴露任何憑證的情況下驗證進入 Workiva!