Bỏ qua, tới nội dung chính

Tự động hóa

Node cho ứng dụng và tệp

Mở, đóng, xoá dữ liệu, sao lưu và gỡ app ngay trong kịch bản, kèm thao tác tệp — mỗi node cần điền gì và đánh đổi những gì.

6 phút đọc

Bài này có mười hai node: chín node lo phần ứng dụng — mở, đóng, xoá, kiểm tra — ba node còn lại lo tệp trên máy. Gần như node nào cũng hỏi cùng một câu đầu tiên — app nào? — và câu trả lời không bao giờ là "Facebook".

Trước hết là package name

Mỗi app được nhận dạng bằng package name: mã định danh nội bộ, viết như một địa chỉ web lộn ngược. Ô nhập tên là Package name, và gợi ý luôn dạng cần điền — "com.facebook.katana hoặc {{packageName}}" — tức là chèn biến vào đó cũng được, và đó là cách một kịch bản chạy mỗi máy một app khác nhau.

Với sáu app hay dùng nhất thì bạn không cần biết mã đó — node Mở ứng dụng có sẵn nút cho từng cái, nói ngay dưới đây. Còn app khác thì ADB Console trên máy liệt kê được những gì đã cài: Chạy lệnh từ ADB Console.

Mở và đóng

Mở ứng dụng (Open app)

Bảng thuộc tính node Mở ứng dụng: ô Package name, các nút chọn nhanh ứng dụng, và công tắc Tắt ứng dụng trước khi mở

Bước đầu tiên của gần như mọi kịch bản, và chính dòng mô tả của nó nói rõ điều đó nghĩa là gì: "Mở app theo package name, mặc định tắt hẳn rồi mở lại từ đầu". App luôn bắt đầu ở màn hình đầu tiên, và chính điều đó làm kịch bản chạy lần nào cũng như lần nào. Đây cũng là lý do nhiều người ngạc nhiên vì app "quên" mất chỗ đang làm dở. Muốn app chạy tiếp chỗ cũ thì tắt tuỳ chọn Tắt ứng dụng trước khi mở.

Ngay dưới ô nhập là một dãy nút cho các app hay mở nhất — Chrome, TikTok, Facebook, Zalo, YouTube, Instagram. Bấm một nút là package name được điền sẵn, nên với sáu app đó bạn không phải đi tra gì cả. Dòng ngay bên dưới cho biết đang chọn app nào.

Đóng ứng dụng (Close app)

Tắt hẳn một app đang chạy, chứ không phải chỉ đẩy nó khuất mắt. Dùng khi kịch bản đã làm xong việc với app đó, và dùng trước mọi thao tác đụng vào dữ liệu của app.

Đóng tất cả ứng dụng (Close every app)

"Tắt mọi ứng dụng đang chạy, trừ những gói được chừa ra" — ô Chừa lại các gói: "Mỗi dòng một package, những gói này sẽ không bị đóng". Đây là nước mở màn tốt cho kịch bản không được phép thừa hưởng những gì lượt chạy trước để lại trên màn hình. Nó quét sạch, nên thứ gì cần chạy tiếp thì phải nằm trong danh sách chừa.

Kiểm tra ứng dụng (Check app)

Đây là node rẽ nhánh chứ không phải node lấy giá trị: "Rẽ nhánh theo việc ứng dụng đã cài hoặc đang chạy hay chưa", đi ra bằng true hoặc false. Dùng để chỉ cài khi máy chưa có app, hoặc bỏ qua đoạn đăng nhập khi app vốn đang chạy sẵn.

Mở một URL hoặc deeplink. Ô liên kết nhận "Đường dẫn http/https hoặc deeplink, chèn được {{tenBien}}". Nên chọn Mở bằng ứng dụng thay vì bỏ trống: "Để trống thì máy tự chọn app, có thể hiện hộp thoại Mở bằng. Chọn app để chắc chắn mở đúng nơi". Kịch bản không được viết để trả lời hộp thoại đó sẽ nằm chết ở đấy.

Xoá sạch và gỡ bỏ

Xoá dữ liệu ứng dụng (Clear app data)

Xoá dữ liệu ứng dụng là mất đăng nhập. Nó đưa app về đúng như vừa cài xong: "Toàn bộ dữ liệu của package này sẽ bị xoá" — tài khoản, thiết lập, thứ đã tải về, tất cả. Lượt chạy sau bắt đầu ở màn đăng nhập và phải đăng nhập lại từ đầu, kể cả bước nhập mã.

Đó cũng chính là lý do người ta cố ý dùng nó, khi cần mỗi lượt chạy bắt đầu từ một app sạch. Nhưng đừng bao giờ để nó nằm trong kịch bản một cách vô tình.

Gỡ ứng dụng (Uninstall app)

Gỡ hẳn app khỏi máy. Muốn có lại thì phải cài lại, nên giữ sẵn file APK ở chỗ lấy được — Cài APK.

Ảnh chụp dữ liệu của app

Sao lưu dữ liệu app (Back up app data) lưu dữ liệu của một app lại ngay trên máy theo tên bạn đặt, còn Khôi phục dữ liệu app (Restore app data) nạp bản đã đặt tên đó trở lại app.

Cặp node này đáng giá hơn vẻ ngoài của nó: sao lưu ngay lúc app vừa cài đặt xong và đã đăng nhập, thì mọi lượt chạy làm hỏng trạng thái app chỉ tốn một lần khôi phục thay vì cả quy trình đăng nhập lại.

Hai điều phải nhớ:

  • Cái tên là thứ duy nhất bạn nắm được. Khôi phục tìm bản sao lưu theo đúng tên đó, nên hãy đặt tên tuần sau đọc vẫn hiểu — shop-da-dang-nhap hơn hẳn test2. Trùng tên cũng không báo lỗi: "Trùng tên là ghi đè bản cũ".
  • Bản sao lưu nằm trên máy, không nằm trong tài khoản của bạn. Hãy coi nó là thứ sống cùng chiếc máy đang thuê, không phải một kho lưu trữ lâu dài.

Tệp trên máy

Có một điều nên biết trước khi đi tìm: trong thư viện node, hai node này nằm ở nhóm Thiết bị chứ không nằm cùng chỗ với các node ứng dụng.

Thao tác tệp (File action)

Sao chép, di chuyển, xoá tệp hoặc tạo thư mục. Bạn đưa đường dẫn nguồn, và với sao chép/di chuyển thì thêm đường dẫn đích. Việc thường gặp: đưa file vừa tải về đúng chỗ app đi tìm, hoặc dọn ảnh chụp màn hình của lượt trước trước khi chạy lượt mới.

Xoá là xoá ngay, không có thùng rác. Muốn lấy file ra khỏi máy sau đó thì xem Xuất tệp từ thiết bị; muốn đưa file lên máy từ đầu thì xem Tải tệp lên.

Tệp có tồn tại? (File exists?)

Cũng là node rẽ nhánh — "Rẽ nhánh theo việc đường dẫn có tồn tại hay không" — đi ra bằng true hoặc false. Dùng để bỏ qua lần tải đã làm rồi, hoặc kiểm tra file đã thật sự về tới nơi trước khi bước sau đọc nó.

Đọc tệp văn bản (Read text file)

Trong thư viện, node này được xếp vào nhóm Biến, vì việc nó làm thật ra là đổ đầy một biến. Nó đọc một tệp trên máy — một danh sách tài khoản, kết quả do app khác ghi ra, bất cứ thứ gì là chữ thuần. Ghép nó với Xử lý chuỗi (Transform text) để cắt lấy đúng dòng cần: Node lưu và xử lý dữ liệu.

Node này dành cho chữ. Ảnh hay file APK đọc kiểu này thì không ra thứ gì dùng được.

Tóm tắt

  1. Mọi việc liên quan tới app đều cần package name (com.facebook.katana), và ô đó chèn {{bien}} được.
  2. Mở ứng dụng mặc định tắt hẳn rồi mở lại, nên app luôn bắt đầu từ màn đầu tiên.
  3. Kiểm tra ứng dụngTệp có tồn tại? là node rẽ nhánh — true hoặc false — không phải node lấy giá trị.
  4. Xoá dữ liệu ứng dụng là mất đăng nhập; Gỡ ứng dụng nghĩa là phải có lại file APK.
  5. Sao lưu và khôi phục khớp nhau bằng cái tên bạn gõ, và bản sao lưu nằm trên chính chiếc máy đó.