Office スクリプトでの外部 API 呼び出しのサポート
スクリプトでは、外部サービスへの呼び出しがサポートされます。 これらのサービスを使用して、ブックにデータやその他の情報を提供します。
注意
外部呼び出しにより、機密データが望ましくないエンドポイントに公開される可能性があります。 管理者は、そのような呼び出しに対して Information Rights Management (IRM) またはファイアウォール保護を確立できます。
重要
外部 API の呼び出しは、 通常の状況では Power Automate ではなく、Excel アプリケーションを介してのみ行うことができます。 外部呼び出しは、SharePoint サイトに格納されているスクリプトではサポートされていません。
外部呼び出し用にスクリプトを構成する
外部呼び出しは 非同期 であり、スクリプトが として async
マークされている必要があります。 次に async
示すように、プレフィックスを main
関数に追加し、 を Promise
返します。
async function main(workbook: ExcelScript.Workbook) : Promise <void>
注:
他の情報を返すスクリプトは、その型の を Promise
返すことができます。 たとえば、スクリプトがオブジェクトを返す Employee
必要がある場合、戻り値のシグネチャは : Promise <Employee>
そのサービスを呼び出すには、外部サービスのインターフェイスを学習する必要があります。 または REST API を使用fetch
している場合は、返されるデータの JSON 構造を決定する必要があります。 スクリプトへの入力とスクリプトからの出力の両方で、必要な JSON 構造に一致するように を作成 interface
することを検討してください。 これにより、スクリプトの型安全性が向上します。 この例については、「 Office スクリプトからのフェッチの使用」を参照してください。
Office スクリプトからの外部呼び出しに関する制限事項
- OAuth2 タイプの認証フローをサインインまたは使用する方法はありません。 すべてのキーと資格情報をハードコーディングする (または別のソースから読み取る) 必要があります。
- API の資格情報とキーを格納するインフラストラクチャはありません。 これはユーザーが管理する必要があります。
- ドキュメント Cookie、、
localStorage
およびsessionStorage
オブジェクトはサポートされていません。 - 外部呼び出しにより、機密データが望ましくないエンドポイントに公開されたり、外部データが内部ブックに取り込まれる可能性があります。 管理者は、このような呼び出しに対してファイアウォール保護を確立できます。 外部呼び出しに依存する前に、ローカル ポリシーを使用してチェックしてください。
- 依存関係を取得する前に、データ スループットの量を必ずチェックしてください。 たとえば、外部データセット全体をプルダウンするのが最適なオプションではない場合があり、代わりに改ページ処理を使用してチャンク内のデータを取得する必要があります。
を使用して情報を取得する fetch
フェッチ API は、外部サービスから情報を取得します。 これは async
API であるため、スクリプトの署名を調整する main
必要があります。 関数 async
を作成しますmain
。 呼び出しと取得も必ずawait
fetch
行json
う必要があります。 これにより、スクリプトが終了する前にこれらの操作が完了します。
によって fetch
取得される JSON データは、スクリプトで定義されているインターフェイスと一致する必要があります。 Office スクリプトでは型がサポートされていないため、返される値を特定の型にany
割り当てる必要があります。 返されるプロパティの名前と型を確認するには、サービスのドキュメントを参照する必要があります。 次に、一致するインターフェイスまたはインターフェイスをスクリプトに追加します。
次のスクリプトでは、 を使用 fetch
して、指定された URL 内のテスト サーバーから JSON データを取得します。 一致する JSONData
型としてデータを格納するインターフェイスに注意してください。
async function main(workbook: ExcelScript.Workbook) {
// Retrieve sample JSON data from a test server.
let fetchResult = await fetch('https://jsonplaceholder.typicode.com/todos/1');
// Convert the returned data to the expected JSON structure.
let json : JSONData = await fetchResult.json();
// Display the content in a readable format.
console.log(JSON.stringify(json));
}
/**
* An interface that matches the returned JSON structure.
* The property names match exactly.
*/
interface JSONData {
userId: number;
id: number;
title: string;
completed: boolean;
}
その他の fetch
サンプル
- Office スクリプトで外部フェッチ呼び出しを使用するサンプルは、ユーザーの GitHub リポジトリに関する基本情報を取得する方法を示しています。
- 「Json を使用して Office スクリプトとの間でデータを渡す」の記事のサンプルでは、コマンドとの
fetch
間で JSON としてデータを渡す方法を示します。 - Office スクリプトのサンプル シナリオ: NOAA からのグラフ水位データは、国家海洋大気局の潮汐および電流データベースからレコードを取得するために使用されるコマンドを示
fetch
しています。 - 「ブックに画像を追加する」の 2 番目のサンプルには、
fetch
Web サイトから画像を取得するための呼び出しが含まれています。
Information Rights Management (IRM) を使用して外部呼び出しを制限する
IRM 設定をブックに適用して、スクリプトによって外部呼び出しが行われるのを防ぐことができます。 この動作を回避するには、 COPY/EXTRACT ポリシー を無効にします。
Power Automate からの外部呼び出し
スクリプトが Power Automate を介して実行されると、外部 API 呼び出しは失敗します。 fetch
呼び出しでは、"ランタイム エラー: 行 X: フェッチが定義されていません" というエラー メッセージが表示されます。 このような参照のスクリプトをフローに組み込む前に、必ずスクリプトをチェックしてください。
Azure AD またはその他の同等のアクション で HTTP を使用して、データを外部サービスからプルまたはプッシュする必要があります。
警告
Power Automate Excel Online コネクタ を介して行われた外部呼び出しは、既存のデータ損失防止ポリシーを維持するために失敗します。 ただし、Power Automate を介して実行されるスクリプトは、organizationの外部、およびorganizationのファイアウォールの外部で実行されます。 この外部環境の悪意のあるユーザーからの保護を強化するために、管理者は Office スクリプトの使用を制御できます。 管理者は、Power Automate で Excel Online コネクタを無効にするか、Office スクリプト管理者コントロールを使用して Office スクリプト for Excel をオフにすることができます。
関連項目
Office Scripts