WorkivaはPythonの標準ライブラリとPython Package Index (PyPI)の両方をサポートしています。依存先は、組み込みのスクリプトエディタを使用して自動的に生成することも、ローカルマシンで手動作成することもできます。
注: スクリプトは現在カスタマイズWorkivaからのみ利用可能です。詳細はこちら
要件
- ワークスペースで Workiva スクリプトを有効にする必要があります。Workivaスクリプトの詳細はこちら。
- スクリプトを作成または編集するには、スクリプト編集者 の役割が必要です。
対応ライブラリ
Workivaスクリプトは、Pythonの標準ライブラリ をすぐにサポートします。コード内でモジュールをインポートするだけで、すぐに使い始めることができます。このライブラリには、ファイルI/Oのようなシステム関数に使用するための組み込みモジュールや、一般的なプログラミングの問題に対する多くの標準化されたソリューションが含まれています。
標準ライブラリに加え、Python Package Index から入手可能なコンポーネントのコレクションが増えています。使用したいPyPIコンポーネントを含む依存先をスクリプトに生成する必要があります。
私たちがよく使う PyPI コンポーネントのひとつに"requests"コンポーネントがあり、Workiva Public API を通して Workiva プラットフォームとやり取りすることができます。
メモ: 追加インストールが必要な PyPI コンポーネントはサポートされないかもしれません。
スクリプトエディタで依存先を生成
スクリプト編集者は依存先を自動的にビルドすることができます。
その方法はこうだ:
- ホーム から、 スクリプトファイルを開く(または新規作成)。
- 左側のSources パネルに移動し、現在のソースのすぐ下にある空白を右クリックし、+ Add Source File を選択する。
-
requirements.txt という名称の新規ソースを作成する。
- 中央のキャンバスに、インストールするライブラリとバージョンを指定する線を追加する。(これは画像例のrequests==2.28.1 の線です)
- 左上の保存 をクリックします。
- 画面を再読み込みする。このステップを飛ばしてはいけない!
保存して更新すると、Workivaは自動的にdependencies.zipという従属バンドルを生成します。これで、あなたのコードでライブラリを使用することができます。
ローカルマシンからの依存先の生成
依存先をマニュアルで作成するには、ローカルでパッケージをビルドし、それをスクリプト編集者にアップロードする必要がある。例えば、スクリプトを実行するために"requests"ライブラリを使用する必要があるプロジェクトがあるとしましょう:
インポート リクエスト print (requests.get('https://api.github.com').text) これは、pip互換のパッケージ・マネージャーを使用して実現できます:
- pip互換書式として使用する「requests」ライブラリのバージョンを定義する。.TXTファイルとして保存する。
echo requests==2.26.0 > requirements.txt
- 新規のDependenciesディレクトリに従属をインストール:
pip3 install --target ./dependencies --requirement requirements.txt
-
dependencies.zip ファイルを作成:
cd dependencies
zip -r ../dependencies.zip .
cd ....
- Workiva Scriptingプロジェクトで、空のdependencies.zip ファイルを作成:
curl -k -v -X POST
-H 'Content-type: application/x-www-form-urlencoded;charset=UTF-8' \
-d "client_id=$CLIENT_ID&client__secret=$CLIENT_SECRET&grant_type=$CLIENT_credentials"
https://api.app.wdesk.com/iam/v1/oauth2/token - エンドポイントのリンクを取得するには、スクリプトエディタの上部にあるメニューの実行リンク をクリックしますい:
curl -X POST https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files \
.以下のようなレスポンスが返ってくるはずです。そこからファイルIDを拾うことができます。
-H "Content-Type: application/json" -H "Authorization:Bearer $BEARER_TOKEN" \
-d '{"path": "dependencies.zip"}'
{"id":"<file-id>", "path": "dependencies.zip"} - スクリプト内のファイルIDのリストを取得するには、GETリクエストを行います:
curl -X GET https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files ˶
-H "Content-Type:application/json" ˶
-H "Authorization:Bearer $BEARER_TOKEN" - 新規ファイルIDにdependencies.zipファイルをアップロードします。
curl -X PUT https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files/<file-id> \
-H "Authorization:Bearer $BEARER_TOKEN" --data-binary @dependencies.zip - 「リクエスト」ライブラリをテストするには、以下のコードでスクリプトを実行します:
import requests print (requests.get('https://api.github.com').text)
FAQ|よくあるご質問
どのAPIとライブラリがサポートされていますか?
Workivaスクリプトは現在m以下の機能をサポートしています:
- WorkivaパブリックAPI
- Workiva以外のAPI
- Pythonの標準ライブラリ
- Python Package Index (PyPI)
追加言語のサポートはまだ検討中であり、将来的に実装される可能性がある。
詳細はこちら:サポートされる Workiva スクリプトライブラリと依存先
Workivaスクリプトで使用されているPythonのバージョンは?
Workivaスクリプトは現在、Python 3.9とPython 3.13をサポートしており、Python 3.9のサポートは2026年3月に終了します。
詳細はこちら:WorkivaのPython 3.13へのスクリプトの移行
Workivaは、PythonやJavaのような一般的な言語でAPIクライアントを提供していますか?
現在、PythonやJava用のパブリックSDKはプロバイダーとして提供していません。
しかし、Workiva APIについてはオープンなAPI仕様を提供していますので、ご自身でライブラリを生成することも可能です。例えば、Workiva Platform API の OAS ファイルを取得し、クライアント・ライブラリを生成することができます 。
スクリプト専用のAPIはありますか?
スクリプト API エンドポイント は、Workiva のプロトタイプ・プラットフォーム API 内のプロトタイプ・エンドポイントとして利用可能です。
Workiva Public APIのAPI付与を作成、ビューするにはどうすればよいですか?
クライアントIDとシークレットを取得するには、こちらの説明に従ってください。
Pythonを使用してWorkiva Public APIに認証する方法を教えてください。
次のコード・スニペットは、IAM サービスを呼び出してアクセストークンを生成し、それを使用してスクリプティング・プロトタイプ・エンドポイントを認証します。APIグラント(つまりクライアント)が、グラントを作成したワークスペース内で使用することができるすべてのスクリプトのリストを取得します。
import requests import json import os AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" SCRIPTING_API_URL = "https://api.app.wdesk.com/prototype/platform/scripts/" CLIENT_ID = os.getenv('CLIENT_ID') CLIENT_SECRET = os.getenv('CLIENT_SECRET') tokenResponse = requests.post( AUTH_URL, data = 'client_id=' + CLIENT_ID + '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', headers = {'Content-Type': 'application/x-www-form-urlencoded; \ charset=UTF-8'}) accessToken = 'Bearer ' + json.loads(tokenResponse.text)['access_token'] dataRes = requests.get(SCRIPTING_API_URL, headers = {'Authorization': accessToken}) print(json.loads(dataRes.text))
Pythonを使ってセルの書式を更新するには?
Update Sheet Content プロトタイプエンドポイントは、Pythonコードを使用してセルの書式設定を更新することができます。
Workivaに保存されているWorkiva以外のファイルの読み書きやアップロードはできますか?
現時点では、Workivaに保存されているWorkiva以外のファイルを読み書きまたはアップロードできるエンドポイントはありません。
プログラムで自動化を作成・管理できますか?
現時点では、プログラムで自動化を作成または管理するためのエンドポイントはありません。