#azure #azure-logic-apps #office-scripts
#лазурь #azure-логика-приложения #офисные сценарии
Вопрос:
У нас есть приложение логики Azure, которое считывает файл excelfile из sharepoint и вставляет строки в базу данных sql. Иногда имена столбцов в файле excel содержат начальные и/или конечные пробелы, что приводит к ошибке вставки, поскольку имена столбцов в действии Вставить строку не совпадают с именами столбцов в файле. Как лучше всего удалить начальные и конечные пробелы из имен столбцов в приложении логики Azure? введите описание изображения здесь
Комментарии:
1. Я думаю, что вы могли бы использовать формулу обрезки excel, чтобы выполнить некоторую очистку перед вставкой. Одна из идей состоит в том, чтобы использовать офисный скрипт для создания нового рабочего листа с заполненным диапазоном для заголовка — например, на новом листе в A1 поместите эту формулу =ОБРЕЗАТЬ(Лист1!A1:Z1). Сделайте что-то подобное для оставшихся данных, а затем извлеките их из нового рабочего листа. Сработает ли что-то подобное? Вы надеетесь сохранить очистку/обрезку текста в приложении логики?
2. @Джеффри Да, это звучит как хорошее решение, я надеялся сделать это в приложении логики. Я попытался добавить действие сценария запуска Excel, но не понимаю, как написать сценарий, в раскрывающемся списке нет доступных сценариев, и когда я пытаюсь ввести какой-либо сценарий в текстовое поле сценария, я получаю: Код ошибки: «Плохой запрос», сообщение: «Не удается проанализировать ссылку на сценарий» (хотя сценарий является допустимым офисным сценарием, я нашел несколько примеров в Интернете). Должен ли я каким-то образом добавить скрипт в файл, чтобы найти его в раскрывающемся списке? Что касается вопросов, я новичок в приложениях логики и офисных сценариях…
3. сначала вам нужно будет создать офисный скрипт в Excel для Интернета. После его создания он должен быть доступен для выбора в действии сценария запуска Excel в раскрывающемся списке.
Ответ №1:
Одним из обходных путей является то, что вы можете использовать replace
выражение, взяв переменную name в compose
соединителе. Вот мой рабочий процесс —
Я использую приведенное ниже динамическое выражение для замены пробела
replace(variables('Name'),' ','')
выход:
Комментарии:
1. Спасибо вам за ваш ответ! Но мне интересно, содержит ли переменная name содержимое ячеек или это имена заголовков? Потому что наша проблема связана только с заголовками (и с тем, как получить доступ к именам заголовков в приложении логики). В идеале мы хотели бы обрезать/заменить только имена заголовков. В вашем примере переменная Name содержит только имена заголовков и как вы устанавливаете эту переменную?
2. Переменная Name содержит все значения столбца Name
3. Чтобы задать переменную, вам нужно инициализировать переменную, используя
Initialize variable
соединитель с его именем, указав тип данных этого столбца, а затем используяset variable
сопоставление соединителя с заголовком столбца, с которым мы хотим выполнять операции.4. Если мой ответ вам помог, вы можете принять его в качестве ответа (нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполнение). Это может быть полезно для других членов сообщества. Спасибо
Ответ №2:
Вместо использования встроенной замены вы можете добавить шаг потока, который извлекает данные из Excel с помощью офисного сценария. Сценарий Office может получить диапазон/таблицу и выполнить очистку только заголовков, а затем вернуть результат на следующий шаг в потоке. Вы можете подходить к деталям так творчески, как вам нужно:
function main(workbook: ExcelScript.Workbook) { const table = workbook.getTable("DemoTable"); const headersAndValues = table.getRange().getValues(); cleanup(headersAndValues[0] as string[]); console.log(JSON.stringify(headersAndValues)); return headersAndValues; } function cleanup(data: string[]): string[] { data.forEach((val, index) =gt; { data[index] = val.trim(); }) }