Нужна помощь. У меня есть книга Excel с двумя листами: «Лист1» и «Лист2». В «Листе1» есть таблица Excel с именем «Таблица1» со столбцами «Сервер», «Работа», «Ошибка», «PrevHealth», «PrevError». В столбце «Сервер» хранятся значения имени сервера. В столбце «Здоровье» отображается текущее состояние здоровья с такими значениями, как «Критический», «Нормальный», «Предупреждение». В столбце «PrevHealth» сохраняется состояние здоровья за предыдущий день с такими значениями, как «Критический», «Нормальный», «Предупреждение». В столбце «Ошибка» хранится сегодняшнее сообщение об ошибке сервера, когда значение «Работоспособность» равно «Предупреждение» или «Критический». В столбце «PrevError» сохраняется сообщение об ошибке предыдущего дня, если значение «PrevHealth» равно «Предупреждение» или «Критический».
В «Листе2» есть пустая таблица Excel с именем «Таблица2» со столбцами «Сервер», «LastHealth», «LastError»,
Напишите сценарий Office, который поддерживает Excel Automate. Этот сценарий должен пройти через «Таблицу1» в «Лист1». Находясь в цикле, (i) если ячейка в столбце «Здоровье» имеет значение «Критический», вставьте «Сервер», «Работа», «Ошибка» текущей строки в новую строку как «Сервер», «LastHealth», «LastError» таблицы 2 на листе 2. (ii) Если ячейка в столбце «Работоспособность» не имеет значения «Критическое», но значение «PrevHealth» имеет значение «Критическое», Вставьте «Server», «PrevHealth», «PrevError» текущей строки в новую строку, например «Server», «LastHealth», «LastError» таблицы 2 на листе 2. (iii) Если оба значения «Health» и «PrevHealth» не являются «критическими», пропустите это значение. и обработать следующую строку
Я провел некоторую проверку и попробовал следующий код. Но я столкнулся с ошибкой: «Строка 25: Таблица addRow: аргумент недействителен, отсутствует или имеет неправильный формат».
function main(workbook: ExcelScript.Workbook) { // Get the worksheets const sheet1 = workbook.getWorksheet("Sheet1"); const sheet2 = workbook.getWorksheet("Sheet2"); // Get the tables const table1 = sheet1.getTable("Table1"); const table2 = sheet2.getTable("Table2"); // Get the data range from Table1 const dataRange = table1.getRangeBetweenHeaderAndTotal(); // Loop through each row in Table1 for (const row of dataRange.getValues()) { const server = row[0]; // Server column const health = row[1]; // Health column const error = row[2]; // Error column const prevHealth = row[3]; // PrevHealth column const prevError = row[4]; // PrevError column // Check conditions if (health === "Critical") { // Insert a new row in Table2 with Server, Health, Error table2.addRow([server, health, error]); } else if (prevHealth === "Critical") { // Insert a new row in Table2 with Server, PrevHealth, PrevError table2.addRow([server, prevHealth, prevError]); } // Otherwise, skip the row }
function main(workbook: ExcelScript.Workbook) {
// Get the worksheets
const sheet1 = workbook.getWorksheet("Sheet1");
const sheet2 = workbook.getWorksheet("Sheet2");
// Get the tables
const table1 = sheet1.getTable("Table1");
const table2 = sheet2.getTable("Table2");
// Get the data range from Table1
const dataRange = table1.getRangeBetweenHeaderAndTotal();
let dataVals:(string|number|boolean)[][] = [];
// Loop through each row in Table1
for (const row of dataRange.getValues()) {
const server = row[0]; // Server column
const health = row[1]; // Health column
const error = row[2]; // Error column
const prevHealth = row[3]; // PrevHealth column
const prevError = row[4]; // PrevError column
// Check conditions
if (health === "Critical") {
// Insert a new row in Table2 with Server, Health, Error
dataVals.push([server, health, error]);
} else if (prevHealth === "Critical") {
// Insert a new row in Table2 with Server, PrevHealth, PrevError
dataVals.push([server, prevHealth, prevError]);
}
// Otherwise, skip the row
}
if (dataVals){
if (table2){
table2.addRows(-1,dataVals);
}
}
}
Привет, Таллер! Большое спасибо за ваш быстрый ответ еще раз. Кстати, при использовании цикла «for (const row of dataRange.getValues()) ...» можно ли также получить номер строки? Потому что в ячейках столбцов «Здоровье» и «Предыдущее здоровье» Таблицы 1 могут быть комментарии (добавленные с помощью опции Excel «Новый комментарий»). Я хочу получить «Имя автора» и «Содержимое комментария» и также вставить их в таблицу Table2. Это означает, что в таблице Table2 теперь будет еще два столбца, а именно «LastAuthorName» и «LastComment», для получения дополнительной информации. Еще раз спасибо.
Пожалуйста, создайте таблицу MD с помощью онлайн-инструмента Генератор таблиц . Как создать минимальный воспроизводимый пример