Я новичок в Office Scripts. Вот чего я пытаюсь добиться
Вот лист Raw_Data
Вот выходной лист
Вот что я попытался придумать, и это не так уж и много
function main(workbook: ExcelScript.Workbook) {
let test_row = 9;
let test_column = 1;
let test_empty = 0;
const sheet_temp = workbook.getWorksheet("Temp");
const sheet_raw = workbook.getWorksheet("Raw_Data");
const sheet_Upload = workbook.getWorksheet("Upload_SO_Xorosoft");
while (test_empty == 0) {
if (sheet_temp.getCell(test_row, test_column).getValue() == 1) {
//this to test if A9=1
;
}
else if (sheet_temp.getCell(test_row, test_column).getValue() == 2) {
//this to test if A9=2
;
}
else {
//this to test if A9 is blank
//complete do while condition
test_empty=1;
}
//export to csv
}
}
Извините, что не выразился яснее. Нет, этот код не работает. код не входит в условия if, и я пытался протестировать с помощью консоли, но не смог отобразить .getValue() в console.info





Логику извлечения данных можно упростить следующим образом:
1, извлеките столбцы 5 (столбцы от A до E в выходной таблице).2, извлеките столбцы 2 (столбцы F и G в выходной таблице).dataValuesresRowsfunction main(workbook: ExcelScript.Workbook) {
const startRow = 9;
const colCnt = 10;
const sheet_temp = workbook.getWorksheet("Temp");
const sheet_raw = workbook.getWorksheet("Raw_Data");
const lastRow = sheet_raw.getRange("A:A").getLastCell().getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex();
const dataValues = sheet_raw.getRangeByIndexes(startRow - 1, 0, lastRow - startRow + 2, colCnt).getValues();
let resRows: [] = [];
let dataRow: [] = [];
for (let i = 0; i < dataValues.length; i++) {
if (dataValues[i][0] == "1") {
dataRow = [];
for (let j = 5; j < dataValues[0].length; j++) {
dataRow.push(dataValues[i][j]);
}
}
else if (dataValues[i][0] == "2") {
let newRow: [] = [...dataRow];
newRow.push(dataValues[i][4]);
newRow.push(dataValues[i][8]);
// console.info(newRow)
resRows.push(newRow)
}
}
let useRange = sheet_temp.getUsedRange();
if (useRange){ useRange.clear(ExcelScript.ClearApplyTo.all);}
sheet_temp.getRangeByIndexes(0, 0, resRows.length, resRows[0].length).setValues(resRows);
}
Это выглядит потрясающе. Мне понадобится время, чтобы переварить это. Жаль, что в офисных сценариях пока нет таких инструментов отладки, как VBA. Но спасибо. Я попробую это.
Это работает. Большое спасибо. Где я могу изучить сценарии Office, кроме Youtube и документации Microsoft? Я также хочу использовать API со сценариями Office.
Образцы довольно хорошие. Документация Microsoft: > Образцы и сценарии Office Scripts
И какой у тебя вопрос? Код работает? Что происходит или не происходит?