NguyenDang95
Senior Member
Giới thiệu sơ lược về Office Scripts, giải pháp tự động hóa các thao tác trên Excel:
Ra mắt từ năm 2019, Office Scripts là sản phẩm của Microsoft được viết bằng ngôn ngữ TypeScripts có chức năng tương tự như VBA nhưng có thể chạy trên nền web, điều mà VBA không thể làm được. Kết hợp với Power Automate, người dùng có thể tạo ra những macro phục vụ nhiều mục đích khác nhau cho công việc.
Để viết và sử dụng Office Scripts trên Excel, người dùng cần có:
Một số ví dụ về Office Scripts:
Để soạn thảo và chạy Office Scripts trong Excel, người dùng chọn tab Automate trên thanh ribbon của Excel. Giao diện thông thường như sau:
Xóa những sheet trống, không có nội dung:
Đánh dấu những ô có giá trị trùng nhau:
Dùng Google Translate:
Cuối cùng, chuyển những ô chứa công thức thành giá trị đã tính toán:
Hạn chế:
Office Scripts documentation
TypeScript restrictions in Office Scripts
Platform limits and requirements with Office Scripts
Differences between Office Scripts and VBA macros
When to use Power Query or Office Scripts
Fundamentals for Office Scripts in Excel
Best practices in Office Scripts
Improve the performance of your Office Scripts
Troubleshoot Office Scripts
Stack Overflow
Ra mắt từ năm 2019, Office Scripts là sản phẩm của Microsoft được viết bằng ngôn ngữ TypeScripts có chức năng tương tự như VBA nhưng có thể chạy trên nền web, điều mà VBA không thể làm được. Kết hợp với Power Automate, người dùng có thể tạo ra những macro phục vụ nhiều mục đích khác nhau cho công việc.
Để viết và sử dụng Office Scripts trên Excel, người dùng cần có:
- Excel on the web, Excel for Windows and Mac
- OneDrive for Business
- Microsoft 365 Business
- Microsoft 365 Business Premium
- Microsoft 365 ProPlus
- Microsoft 365 ProPlus for Devices
- Microsoft 365 Enterprise E3
- Microsoft 365 Enterprise E5
- Microsoft 365 A3
- Microsoft 365 A5
Một số ví dụ về Office Scripts:
Để soạn thảo và chạy Office Scripts trong Excel, người dùng chọn tab Automate trên thanh ribbon của Excel. Giao diện thông thường như sau:
Xóa những sheet trống, không có nội dung:
JavaScript:
function main(workbook: ExcelScript.Workbook)
{
let worksheets = workbook.getWorksheets();
worksheets.forEach(worksheet => {
let wsUsedRange = worksheet.getUsedRange();
if (!wsUsedRange)
{
worksheet.delete();
}
});
}
Đánh dấu những ô có giá trị trùng nhau:
JavaScript:
function main(workbook: ExcelScript.Workbook)
{
let selectedRange = workbook.getSelectedRange();
let rowCount = selectedRange.getRowCount();
let columnCount = selectedRange.getColumnCount();
let rangeValues = selectedRange.getValues();
for (let i = 0; i < rowCount; i++)
{
for (let j = 0; j < columnCount; j++)
{
let result = countIf(selectedRange, rangeValues[i][j])
if (result > 1 )
{
let cell = selectedRange.getCell(i,j);
cell.getFormat().getFill().setColor("green");
}
}
}
function countIf(range: ExcelScript.Range, criteria: ExcelScript.RangeValue): number
{
let duplicatesCount = 0;
let rowCount = range.getRowCount();
let columnCount = range.getColumnCount();
let rangeData = range.getValues();
for (let i = 0; i < rowCount; i++)
{
for (let j = 0; j < columnCount; j++)
{
let cellValue = rangeData[i][j];
if (cellValue === criteria)
{
duplicatesCount = duplicatesCount + 1;
}
}
}
return duplicatesCount;
}
}
Dùng Google Translate:
JavaScript:
async function main(workbook: ExcelScript.Workbook) {
let worksheet = workbook.getActiveWorksheet();
let sourceLang = worksheet.getRange("B2").getValue();
let destinationLang = worksheet.getRange("C2").getValue();
let textToTranslate = worksheet.getRange("B3").getValue();
let fetchResult = await fetch("https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + sourceLang + "&tl=" + destinationLang + "&dt=t&q=" + encodeURI(textToTranslate.toString()))
if (fetchResult.ok)
{
let response = await fetchResult.text();
worksheet.getRange("C3").setValue((JSON.parse(response)[0][0][0]));
}
}
Cuối cùng, chuyển những ô chứa công thức thành giá trị đã tính toán:
JavaScript:
function main(workbook: ExcelScript.Workbook)
{
let selectedRange = workbook.getSelectedRange();
let selectedRangeValues = selectedRange.getValues();
let rowCount: number;
let columnCount: number;
let row: number;
let column: number;
rowCount = selectedRange.getRowCount();
columnCount = selectedRange.getColumnCount();
for (row = 0; row < rowCount; row++)
{
for (column = 0; column < columnCount; column++)
{
let cell = selectedRange.getCell(row, column);
if (cell.getFormula)
{
cell.setValue(selectedRangeValues[row][column]);
}
}
}
}
Hạn chế:
- Trong một thời điểm chỉ có thể tương tác với một workbook
- Tính năng hỗ trợ còn thiếu nhiều và hạn chế so với VBA
- …
Office Scripts documentation
TypeScript restrictions in Office Scripts
Platform limits and requirements with Office Scripts
Differences between Office Scripts and VBA macros
When to use Power Query or Office Scripts
Fundamentals for Office Scripts in Excel
Best practices in Office Scripts
Improve the performance of your Office Scripts
Troubleshoot Office Scripts
Stack Overflow
Last edited: