Odblokowywanie i blokowanie pliku Excel używając Office Script
Table of Contents
Ostatnio próbowałem używać Power Automate do zapisywania danych w arkuszu kalkulacyjnym Excela, gdy zorientowałem się, że plik jest chroniony hasłem. Próbowałem znaleźć jakąkolwiek akcję, która pozwoliłaby mi go odblokować, ale niestety nie udało mi się to. Po dłuższych poszukiwaniach zdałem sobie sprawę, że można to zrobić za pomocą potęgi Office Scripts!
Jak używać Office Script
Gdy jesteś w dokumencie Excel Online (lub aplikacji na pulpicie), przejdź do karty „Automatyzacja” (Automate):
Bezpośrednio stamtąd możesz użyć opcji „NRecord Actions” lub napisać „New Script” samodzielnie. Dowiedz się więcej o pisaniu Office Scripts tutaj.
Odblokowanie pliku Excel
Istnieją dwie możliwe metody odblokowania pliku Excel, w zależności od scenariusza:
- Unprotect – aby wyłączyć zabezpieczenia (źródło);
- Pause protection – aby tymczasowo wyłączyć zabezpieczenia, tylko dla bieżącej sesji (źródło 1, źródło 2).
Uwaga: Jeśli planujesz odblokować plik Excel, aby później można było użyć akcji w Power Automate do manipulowania nim, jedyną opcją jest jego trwałe odblokowanie (unprotect). Jeśli jednak planujesz uruchomić większy skrypt Office, gdzie wyłączenie zabezpieczeń to tylko jeden z kroków, lepszą opcją jest jedynie wstrzymanie zabezpieczeń.
Kod do odblokowania arkusza (i skoroszytu) wygląda następująco:
function main(workbook: ExcelScript.Workbook, password: string) { workbook.getProtection().unprotect(password); workbook.getWorksheets().forEach(sheet => { sheet.getProtection().unprotect(password); }); }
Jak widać, skrypt najpierw odblokowuje skoroszyt, a następnie przechodzi przez dostępne arkusze, aby wyłączyć zabezpieczenia dla każdego z nich. Oczywiście możesz chcieć odblokować tylko bieżący arkusz, na przykład, wybierając go za pomocą jego nazwy:
let currentSheet = workbook.getWorksheet("{WORKSHEET NAME}");
Blokowanie pliku Excel
Aby zablokować plik, musisz wywołać odpowiednią funkcję „lock”, która albo zabezpiecza skoroszyt (źródło), albo wznawia ochronę (źródło). Kod do zabezpieczenia skoroszytu, a następnie każdego arkusza osobno, wygląda następująco:
function main(workbook: ExcelScript.Workbook, password: string) { workbook.getProtection().protect(password); workbook.getWorksheets().forEach(sheet => { sheet.getProtection().protect({ allowAutoFilter: true, allowSort: true, allowFormatCells: true, selectionMode: ExcelScript.ProtectionSelectionMode.normal }, password); }); }
Zwróć uwagę na opcje! Pierwszy parametr funkcji definiuje zakres ochrony i uprawnienia użytkowników:
Wszystkie opcje muszą być przekazane jako prawidłowy JSON. Dostępna lista opcji znajduje się tutaj.
Użycie w Power Automate
Ostatnią częścią jest integracja z Power Automate. Zapisz skrypty, dodaj je do skoroszytu (aby wszyscy posiadający uprawnienia do skoroszytu mogli również ich używać):
A następnie użyj akcji „Uruchom skrypt” (lub innej, w zależności od tego, gdzie jest on przechowywany), aby go wykonać:
Dowiedz się więcej o integrowaniu Office Scripts z Power Automate tutaj.
I to wszystko! Mam nadzieję, że to ci pomoże! 🙂