Поддержка внешнего вызова API в сценариях Office
Скрипты поддерживают вызовы внешних служб. Используйте эти службы для предоставления данных и других сведений в книгу.
Предостережение
Внешние вызовы могут привести к тому, что конфиденциальные данные будут предоставляться нежелательным конечным точкам. Администратор может установить управление правами на доступ к данным (IRM) или защиту брандмауэра от таких вызовов.
Важно!
Вызовы внешних API можно выполнять только через приложение Excel, а не Через Power Automate в обычных условиях. Внешние вызовы также не поддерживаются для скриптов, хранящихся на сайте SharePoint.
Настройка скрипта для внешних вызовов
Внешние вызовы являются асинхронными и требуют, чтобы скрипт был помечен как async
. async
Добавьте префикс в функцию main
и верните Promise
, как показано ниже:
async function main(workbook: ExcelScript.Workbook) : Promise <void>
Примечание.
Скрипты, возвращающие другие сведения, могут возвращать Promise
объект этого типа. Например, если скрипту нужно вернуть Employee
объект, то сигнатура возвращается. : Promise <Employee>
Вам потребуется изучить интерфейсы внешней службы для выполнения вызовов к этой службе. Если вы используете fetch
rest API или, необходимо определить структуру возвращаемых данных в формате JSON. Для входных и выходных данных скрипта рассмотрите возможность создания interface
в соответствии с необходимыми структурами JSON. Это обеспечивает скрипту большую безопасность типов. Пример см. в статье Использование извлечения из сценариев Office.
Ограничения внешних вызовов из сценариев Office
- Нет способа войти или использовать потоки проверки подлинности типа OAuth2. Все ключи и учетные данные должны быть жестко закодированы (или считываются из другого источника).
- Отсутствует инфраструктура для хранения учетных данных и ключей API. Этим должен управлять пользователь.
- Файлы cookie документов,
localStorage
объекты , иsessionStorage
не поддерживаются. - Внешние вызовы могут привести к тому, что конфиденциальные данные будут переданы нежелательным конечным точкам или внешним данным, которые будут перенесены во внутренние книги. Администратор может установить защиту брандмауэра от таких вызовов. Перед использованием внешних вызовов обязательно проверка с локальными политиками.
- Перед использованием зависимости обязательно проверка объем пропускной способности данных. Например, вытягивание всего внешнего набора данных может быть не лучшим вариантом, и вместо этого следует использовать разбиение на страницы для получения данных фрагментами.
Получение сведений с помощью fetch
API извлечения извлекает сведения из внешних служб. Это async
API, поэтому необходимо настроить сигнатуру main
скрипта. Сделайте функцию main
async
. Вы также должны быть уверены await
в вызове fetch
и json
получении. Это гарантирует выполнение этих операций до завершения скрипта.
Все полученные fetch
данные JSON должны соответствовать интерфейсу, определенному в скрипте. Возвращаемое значение должно быть присвоено определенному типу, так как скрипты Office не поддерживают этот any
тип. Чтобы узнать имена и типы возвращаемых свойств, ознакомьтесь с документацией по службе. Затем добавьте соответствующий интерфейс или интерфейсы в скрипт.
Следующий скрипт использует fetch
для получения данных JSON с тестового сервера по заданному URL-адресу. Обратите внимание на 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
, что команда используется для получения записей из базы данных приливов и течений Национального управления океанических и атмосферных исследований. - Второй пример в разделе Добавление изображений в книгу содержит
fetch
вызов для получения изображения с веб-сайта.
Ограничение внешних вызовов с помощью управления правами на доступ к данным (IRM)
Параметры IRM можно применить к книге, чтобы предотвратить внешние вызовы, выполняемые скриптами. Отключите политику копирования/EXTRACT, чтобы предотвратить такое поведение.
Внешние вызовы из Power Automate
Внешние вызовы API завершаются сбоем при выполнении скрипта с помощью Power Automate. Вызов fetch
выдаст сообщение об ошибке "Ошибка среды выполнения: Строка X: выборка не определена". Не забудьте проверка скрипты для таких ссылок, прежде чем создавать их в поток.
Вам придется использовать HTTP с Azure AD или другими эквивалентными действиями, чтобы извлечь данные из внешней службы или отправить их во внешнюю службу.
Предупреждение
Внешние вызовы, выполненные через соединитель Power Automate Excel Online , завершаются сбоем, чтобы обеспечить поддержку существующих политик защиты от потери данных. Однако сценарии, выполняемые в Power Automate, выполняются за пределами организации и за пределами брандмауэров вашей организации. Для дополнительной защиты от злоумышленников в этой внешней среде администратор может контролировать использование сценариев Office. Администратор может отключить соединитель Excel Online в Power Automate или отключить сценарии Office для Excel с помощью элементов управления администратора сценариев Office.
См. также
Office Scripts