Skip to content

Biểu Thức

Dưới đây là các biểu thức mình có thể sử dụng trong Automation của OmniLogin

Dữ liệu chung

Dữ liệu chung là dữ liệu có thể sử dụng trong quy trình của bạn, mình có thể thêm dữ liệu từ file vào trong dữ liệu chung

Ví dụ

Đầu tiên mình sẽ nhập giá trị vào Dữ liệu chung

setting node

Sau đó sử dụng biểu thức {{globalData.0.name}} để lấy ra giá trị đầu tiên của key name và sử dụng trong node Nhấn Phímsetting node

Khối trước đó

Mỗi khi thực hiện một khối

Ví dụ khi viết giá trị của node trước đó bằng node Nhấn Phím

Đầu tiên mình sẽ mở trang google.com bằng node Mở liên kết,tiếp đó mình sẽ lấy ra giá trị của node trước và ghi ra phần tìm kiếm của trang bằng biểu thức {{prevBlockData}} bằng node Nhấn Phím ngay sau node Mở liên kếtsetting node

Các biểu thức khác

Để viết một biểu thức, bạn phải tuân theo định dạng {{keyword}} và thay thế keyword bằng một trong các nguồn dữ liệu ở trên. Nó cho phép Automation phân biệt giữa dữ liệu tĩnh và dữ liệu động.

Giả sử bạn có một biến listname trong quy trình và giá trị của nó là một mảng đối tượng. Bạn muốn gửi biến này tới API bằng cách sử dụng HTTP Request.

json
[
  { "name": "Telegram", "url": "https://telegram.org/" },
  { "name": "X", "url": "https://twitter.com/" },
  { "name": "Etsy", "url": "https://www.etsy.com/" }
]

Bạn có thể sử dụng biểu thức sau bên trong phần Nội dung của node HTTP Request:

{{variables.listname}}

HTTP Request block body

Nhưng điều gì sẽ xảy ra nếu bạn muốn sử dụng thuộc tính url trên phần tử đầu tiên của mảng làm giá trị bên trong node Mở Liên Kết. Để làm được điều đó, hãy sử dụng biểu thức sau:

{{variables.listname.0.url}}

New tab block URL

0 trên biểu thức đó có nghĩa là phần tử đầu tiên của mảng. Và nếu bạn muốn lấy phần tử thứ hai của mảng thì hãy thay thế bằng 1, là 2 khi muốn lấy phần tử thứ ba, 3 cho phần tử thứ tư, v.v.

Truy Cập Dữ Liệu Khác Bên Trong Biểu Thức

Để truy cập dữ liệu khác bên trong biểu thức, bạn phải gói biểu thức để truy cập dữ liệu bằng dấu ngoặc ([]).

Hàm

Tất cả các hàm dựng sẵn luôn bắt đầu bằng tiền tố $; ví dụ: $funcName(param). Và đây là danh sách tham khảo các hàm có sẵn trong Automation.

$date(date, dateFormat?)

Nhận hoặc định dạng một ngày. Hàm này có hai tham số, tham số thứ hai là tùy chọn.

Nếu muốn định dạng ngày hiện tại, bạn có thể trực tiếp chuyển dateFormat làm tham số đầu tiên, chẳng hạn như {{ $date('dd-MMMM-yyyy') }}, và kết quả sẽ là 14-September-2023. Xem tất cả các định dạng ngày có sẵn trên trang này.

Và đối với tham số ngày, hãy xem định dạng ngày hợp lệ trên MDN page.

Ví dụ

Mình có thể dùng hàm date với nhiều cách như sau

Với biểu thức trên, mình sẽ hiển thị ra các giá trị sau

  • Giá trị được gán vào biến a bằng biểu thức tạo ra ngày tại thời điểm hiện tại với định dạng lần lượt là ngày/tháng/năm/giờ:phút khung giờ sáng/tối

  • Giá trị được gán vào biến b bằng biểu thức tạo ra ngày tại thời điểm hiện tại với định dạng lần lượt là ngày/tháng/năm/giờ:phút khung giờ sáng/tối múi giờ

  • Giá trị được gán vào biến c bằng biểu thức tạo ra ngày tại thời điểm hiện tại với định dạng lần lượt là ngày-tháng-năm-giờ:phút khung giờ sáng/tối

  • Giá trị được gán vào biến d bằng biểu thức tạo ra ngày tại thời điểm hiện tại với định dạng dấu thời gian tại thời điểm hiện tại

  • Giá trị được gán vào biến e bằng biểu thức trả về định dạng mong muốn với tham số thời gian được nhập vào

$rand(min?, max?)

Hàm rand này tạo ra một số ngẫu nhiên trong khoảng từ min đến max (bao gồm cả min và max). Nếu cả min và max đều là số nguyên, nó trả về một số nguyên ngẫu nhiên trong khoảng. Nếu min hoặc max không phải là số nguyên, nó trả về một số thập phân ngẫu nhiên trong khoảng.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó khi chạy mình sẽ thấy các biến sẽ nhận giá trị sau

  • Giá trị được gán vào biến a bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 100

  • Giá trị được gán vào biến b bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 10

  • Giá trị được gán vào biến c bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 10.4 khi đó sẽ luôn tạo ra một chữ số thập phân

  • Giá trị được gán vào biến d bằng biểu thức tạo ngẫu nhiên một số trong khoảng giá trị của biến a đến b

$randint(min?, max?)

Hàm randint này tạo ra một số nguyên ngẫu nhiên trong khoảng từ min đến max (bao gồm cả min và max). Nếu không cung cấp min và max, nó sẽ mặc định là khoảng từ 0 đến 100.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó khi chạy mình sẽ thấy các biến sẽ nhận giá trị sau

  • Giá trị được gán vào biến a bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 100

  • Giá trị được gán vào biến b bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 10

  • Giá trị được gán vào biến c bằng biểu thức tạo ngẫu nhiên một số trong khoảng từ 0 đến 10.4 vì là hàm tạo ra các số nguyên ngẫu nhiên kết quả sẽ là số nguyên dương

  • Giá trị được gán vào biến d bằng biểu thức tạo ngẫu nhiên một số trong khoảng giá trị của biến a đến b

$getLength(str)

Hàm này cố gắng phân tích chuỗi đầu vào str thành JSON. Nếu thành công, nó trả về độ dài của giá trị kết quả. Nếu phân tích thất bại (tức là str không phải là JSON hợp lệ), nó trả về chuỗi gốc str.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó khi chạy mình sẽ thấy các biến sẽ nhận giá trị sau

  • Giá trị được gán vào biến a bằng biểu thức tính độ dài của một chuỗi văn bản

  • Giá trị được gán vào biến b bằng biểu thức tính độ dài của một bảng

Độ dài của bảng chính số phần tử có trong một mảng, như trong hình mình có một mảng gồm 3 phần tử object do đó kết quả độ dài sẽ là 3

  • Giá trị được gán vào biến c bằng biểu thức tính độ dạng của dữ liệu đầu tiên trong bảng

Như trong hình phần tử đầu tiên trong bảng là đối tượng {"cot1":"chao cac ban nha"} và giá trị trong cột cot1 đó là chao cac bạn nha, khi đó độ dài của chuỗi đó sẽ ra kết quả là 16

  • Giá trị được gán vào biến e bằng biểu thức tính độ dài của một biến chứa một chuỗi văn bản

$getOTP(secret)

Hàm này sẽ nhận một tham số dưới dạng chuỗi và sau đó tạo ra một mã OTP dựa trên chuỗi đó. Thông thường hàm này sẽ dùng khi mình muốn lấy ra đoạn mã theo 2fa nhập vào

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức tạo mã OTP dựa trên một chuỗi nhập vào

  • Giá trị được gán vào biến c bằng biểu thức tạo mã OTP dựa trên một biến b nhập vào

Chú ý

Mình cần phải cài đặt thời gian ở máy trùng với thời gian thực tế để hàm này không bị lỗi

$randData(text)

Hàm randData này tạo ra một ký tự hoặc chuỗi ngẫu nhiên dựa trên đầu vào text. Nếu text là một chuỗi, nó thay thế bất kỳ lần xuất hiện nào của dấu hỏi (?) theo sau bởi một chữ cái bằng một ký tự ngẫu nhiên thuộc loại tương ứng (chữ thường, chữ hoa, chữ số, ký tự đặc biệt, hoặc kết hợp của những loại này).

  • ?l: chữ thường
  • ?u: chữ hoa
  • ?d: chữ số
  • ?f: chữ thường + chữ hoa
  • ?s: biểu tượng
  • ?m: chữ hoa + chữ số
  • ?n: chữ thường + chữ số
  • ?a: bất kì
Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức tạo ra một chuỗi chỉ gồm chữ hoa, chữ thường và số

  • Giá trị được gán vào biến b bằng biểu thức tạo ra một chuỗi chỉ gồm chữ thường và số sau đó thêm đuổi @gmail.com để có thể tạo ngẫu nhiên một gmail

  • Giá trị được gán vào biến c bằng biểu thức tạo ra một chuỗi chỉ gồm chữ thường và số, biểu tượng và bất kì

$randDate(minDate?, maxDate?, dateFormat?)

Hàm sẽ tạo một thông số thời gian ngẫu nhiên trong phạm vi của 2 tham số minDate(bắt đầu từ 01-01-1990) và maxDate dưới dạng 1 dạng hiển thị bất kỳ của dateFormat. Mặc định thời gian sẽ ở dạng dd-MM-yyyy: 12-12-2000 nếu bạn muốn thay đổi format thì có thể thêm dateFormat sau pham vi thời gian

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức tạo ngẫu nhiên một đơn vị thời gian theo định dạng mặc định ngày-tháng-năm

  • Giá trị được gán vào biến b bằng biểu thức tạo ngẫu nhiên một đơn vị thời gian theo định dạng ngày/tháng/năm

  • Giá trị được gán vào biến c bằng biểu thức tạo ngẫu nhiên một đơn vị thời gian theo định dạng năm/tháng/ngày

$randPick(data)

Hàm sẽ lấy ngẫu nhiên 1 phần tử trong mảng dữ liệu data. Hàm này thường được sử dụng khi bạn nhập một mảng vào trong hàm.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Đầu tiên tạo một mảng gồm 3 phần tử

Sau đó sử dụng biểu thức {{$randPick([variables.a])}} trong node Ghi Log để trả về ngẫu nhiên một phần tử trong mảng a

Khi đó kết quả trả về sẽ như sau

$randChoice(...data)

Hàm này khá giống với hàm randPick, khi đều chọn ra một phần tử ngẫu nhiên trong mảng, như hàm này lại có thể thêm trực tiếp vào hàm các phần tử để sử dụng, khi thêm các giá trị vào, nó sẽ tự chuyển chúng thành mảng và thực hiện hành động lấy 1 phần tử ngẫu nhiên. Thường bạn sẽ dùng hàm này khi muốn chọn ngẫu nhiên 1 giá trị trong 1 list có trong hàm

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

Giá trị được gán vào biến a bằng biểu thức lấy ngẫu nhiên một phần tử trong danh sách phần tử nhập vào

$split(value, param)

Hàm split này chia một chuỗi thành một mảng các chuỗi con dựa trên một dấu phân cách param được chỉ định. Nếu không cung cấp dấu phân cách, nó mặc định là một khoảng trắng. Nếu giá trị đầu vào không phải là chuỗi hoặc là rỗng, hàm trả về giá trị gốc.

Ví dụ trường hợp thông thường

Thông thường mình sẽ sử dụng hàm này như sau splitsplit

Khi đó giá trị sau khi chạy sẽ hiển thị như sau

split

  • Giá trị được gán vào biến a bằng biểu thức chuyển chuỗi nhập vào theo dấu phân cách " "

  • Giá trị được gán vào biến c bằng biểu thức chuyển một biến có giá trị chuỗi theo dấu phân cách " "

  • Giá trị được gán vào biến e bằng biểu thức chuyển một biến có giá trị chuỗi theo dấu phân cách " " được gán cho biến d

Ví dụ trường hợp chuyển một chuỗi cách nhau bởi dấu xuống dòng

Trong trường hợp giá trị nhập vào của bạn là các giá trị cách nhau bởi dấu xuống dòng split

Khi đó mình cần không thể sử dụng biểu thức như các ví dụ trên. Mình cần tạo một biến và chèn giá trị xuống dòng bằng cách click enter bên trong ô điền giá trị của biến. Sau đó dùng biểu thức split với giá trị param là biểu thức lấy giá trị biến phantachvariables.phantach. Khi đó biểu thức để tách chuỗi thành mảng như sau

split

Khi đó giá trị trả về sẽ là một mảng chứa các giá trị được nhập vào

split

$increment(value, incrementBy)

Hàm này tăng giá trị bằng phép cộng lên một lượng nhất định, nhưng chỉ khi cả giá trị và lượng tăng đều là số. Nếu một trong hai không phải là số, giá trị ban đầu sẽ được trả về

Ví dụ

Mình sẽ sử dụng hàm này ở các trường hợp sau split

Khi đó giá trị trả về sẽ như sau

split

  • Giá trị được gán cho biến a bằng biểu thức cộng hai số
  • Giá trị được gán cho biến b bằng biểu thức cộng một giá trị của biến với một số hoặc ngược lại
  • Giá trị được gán cho biến c bằng biểu thức cộng giá trị của 2 biến với nhau

$subtract(value, incrementBy)

Hàm này trừ subtractBy bằng value nếu cả hai đều là số, nếu không thì trả về giá trị gốc của value.

Ví dụ

Mình sẽ sử dụng hàm này ở các trường hợp sau split

Khi đó giá trị trả về sẽ như sau

split

  • Giá trị được gán cho biến a bằng biểu thức trừ hai số

  • Giá trị được gán cho biến b bằng biểu thức trừ một giá trị của biến với một số hoặc có thể ngược lại

  • Giá trị được gán cho biến c bằng biểu thức trừ giá trị của 2 biến với nhau

$multiply(value, multiplyBy)

Hàm này nhân hai giá trị lại với nhau, nhưng chỉ khi cả hai giá trị đều là số. Nếu một trong hai giá trị không phải là số, nó sẽ trả về giá trị ban đầu

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức nhân hai số với nhau
  • Giá trị được gán vào biến a bằng biểu thức nhân giá trị một biến với một số
  • Giá trị được gán vào biến a bằng biểu thức nhân giá trị của hai biến với nhau

$divide(value, incrementBy)

Hàm này chia value cho divideBy và trả về kết quả. Tuy nhiên, nếu value hoặc divideBy không phải là số, nó trả về giá trị gốc value thay vì thực hiện phép chia.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức chia hai số với nhau
  • Giá trị được gán vào biến a bằng biểu thức chia giá trị một biến với một số
  • Giá trị được gán vào biến a bằng biểu thức chia giá trị của hai biến với nhau

$slice(value, start, end)

Hàm slice thực hiện việc cắt một phần của chuỗi hoặc mảng value và trả ra một chuỗi trong khoảng start đến end. Phần tử cuối cùng của chuỗi mới sẽ nằm trước vị trí của end. Chẳng hạn mình muốn cắt một chuỗi có phần tử thứ 5a6b đến phần tử thứ 6 khi đó sẽ chỉ lấy giá trị a. Ngoài ra nếu chỉ có khoảng start mà không có end, thì chuỗi được cắt sẽ cứ từ khoảng start cho đến hết chuỗi.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

  • Giá trị được gán vào biến a bằng biểu thức cắt chuỗi Hello,world! theo vị trí phần từ từ 1 đến 6
  • Giá trị được gán vào biến c bằng biểu thức cắt biến b chứa chuỗi Hello,world! theo vị trí phần từ từ 1 đến 6
  • Giá trị được gán vào biến f bằng biểu thức cắt biến b chứa chuỗi Hello,world! theo phạm vi mong muốn được chèn vào các biến d1 e6, khi đó phạm vi cắt sẽ là từ 1 đến 6
  • Giá trị được gán vào biến g bằng biểu thức cắt biến gchứa chuỗi hello every theo phạm vi từ vị trí phần tử thứ 2 cho đến hết chuỗi

Khi đó kết quả trả về sẽ như sau

$replace(value, search, replace)

Hàm đầu tiên chuyển đổi tất cả các tham số thành chuỗi. Nếu tham số search là biểu thức chính quy (tức là bắt đầu và kết thúc bằng dấu gạch chéo /), nó tạo một đối tượng RegExp mới và sử dụng nó để thay thế chuỗi con khớp trong chuỗi value. Ngược lại, nó thực hiện việc thay thế chuỗi đơn giản. Nếu chuỗi value rỗng, hàm trả về nó ngay lập tức mà không thực hiện bất kỳ thay thế nào.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

  • Giá trị được gán vào biến a bằng biểu thức thay đổi chuỗi rất trong đoạn văn bản thành chuỗi dễ dùng được nhập vào
  • Giá trị được gán vào biến c bằng biểu thức thay đổi đoạn chuỗi xịn nằm trong biến b chứa văn bản OmniLogin rất xịn thành chuỗi tuyệt vời được nhập vào
  • Giá trị được gán vào biến f bằng biểu thức thay đổi đoạn chuỗi xịn được gán vào biến d nằm trong một biến b chứa văn bản OmniLogin rất xịn thành chuỗi tuyệt vời được gán vào bi

Khi đó kết quả trả về sẽ như sau

$replaceAll(value, search, replace)

Hàm replaceAll này thay thế tất cả các xuất hiện của chuỗi search hoặc biểu thức chính quy trong chuỗi value bằng chuỗi replace. Nó đầu tiên kiểm tra xem chuỗi search có phải là biểu thức chính quy (bắt đầu và kết thúc bằng /) và tạo một đối tượng RegExp nếu đúng. Sau đó, nó sử dụng phương thức replaceAll để thay thế tất cả các xuất hiện của chuỗi search hoặc biểu thức chính quy bằng chuỗi replace. Hàm này cũng chuyển đổi các tham số value, searchreplace thành chuỗi nếu chúng không phải là chuỗi, để đảm bảo hàm hoạt động với các đầu vào không phải chuỗi.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức thay đổi tất cả ký tự - trong một chuỗi O-m-nilogin thành ký tự ""
  • Giá trị được gán vào biến c bằng biểu thức thay đổi tất cả ký tự nằm trong chuỗi nằm trong biến b chứa văn bản OmniLogin rất xịn thành ký tự - được nhập vào
  • Giá trị được gán vào biến f bằng biểu thức thay đổi tất cả ký tự được gán vào biến d trong một chuỗi được gán vào biến b chứa văn bản OmniLogin rất xịn thành ký tự - được gán trong biến e

$toLowerCase(value)

Hàm này chuyển đổi một giá trị cho trước thành chữ thường. Nếu giá trị là null hoặc undefined, nó trả về giá trị gốc không thay đổi. Ngược lại, nó chuyển đổi giá trị thành chuỗi và sau đó thành chữ thường.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức thay đổi một chuỗi HELLO WORLD! thành chuỗi hello world!
  • Giá trị được gán vào biến c bằng biểu thức thay đổi một chuỗi OmniLogin được gán vào biến b thành chuỗi omnilogin

$toUpperCase(value)

Hàm này chuyển đổi giá trị đầu vào thành chữ hoa. Nếu giá trị là falsy (ví dụ: null, undefined, chuỗi rỗng), nó trả về giá trị gốc mà không thay đổi. Ngược lại, nó chuyển đổi giá trị thành chuỗi và trả về kết quả viết hoa.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức thay đổi một chuỗi hello world thành chuỗi HELLO WORLD
  • Giá trị được gán vào biến c bằng biểu thức thay đổi một chuỗi OmniLogin được gán vào biến b thành chuỗi OMNILOGIN

$modulo(num, divisor)

Hàm này tính toán phần dư của value chia cho divisor.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức chia 2 số 225 với nhau để ra giá trị số dư là 2
  • Giá trị được gán vào biến c bằng biểu thức chia 2 số 12 nằm trong biến b5 với nhau để ra giá trị số dư là 2
  • Giá trị được gán vào biến e bằng biểu thức chia 2 số 12 nằm trong biến b5 nằm trong biến d với nhau để ra giá trị số dư là 2

$filter(data, syntax)

Hàm này lọc dữ liệu dựa trên biểu thức JSONPath. Nếu dữ liệu đầu vào không phải là đối tượng hoặc mảng, nó trả về dữ liệu gốc.

  • data: Đối tượng Javascript để thực hiện truy vấn
  • syntax: JSONPath Syntax
Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Đầu tiên tạo một mảng dữ liệu chứa nhiều đối tượng trong node JavaScript Code sau đó tạo một biến nhận mảng đó để sử dụng ở ngoài quy trình bằng hàm omniloginSetVariable

Sau đó dùng biểu thức {{$filter([variables.data],'$..color')}} trong node Ghi Log. Khi sử dụng biểu thức này, hàm sẽ lấy ra tất cả giá trị của key color trong biến data

Khi đó kết quả trả về sẽ như sau

$reverse(value)

Hàm reverse này nhận vào một giá trị value và đảo ngược thứ tự của các phần tử trong đó. Nếu value không phải là một mảng (array) hoặc đối tượng (object), hàm sẽ trả về giá trị gốc không đổi.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Đầu tiên gán ba giá trị vào biến a để biến nó thành mảng chứa ba giá trị 1,2,3
  • Giá trị được gán vào biến b bằng biểu thức đảo ngược thứ tự các phần tử nằm trong biến a

$shuffle(value)

Hàm shuffle này nhận vào một mảng dữ liệu value và trả về một mảng mới với các phần tử được sắp xếp ngẫu nhiên.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Đầu tiên gán ba giá trị vào biến a để biến nó thành mảng chứa ba giá trị 1,2,3
  • Giá trị được gán vào biến b bằng biểu thức xáo trộn thứ tự các phần tử nằm trong biến a

$includes(data, item)

Hàm includes kiểm tra xem một phần tử item có tồn tại trong một tập dữ liệu data hay không. Nếu data là một mảng, hàm sẽ sử dụng phương thức includes() có sẵn để kiểm tra sự tồn tại của item. Nếu data không phải là một mảng, hàm sẽ trả về false ngay lập tức.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Đầu tiên gán ba giá trị vào biến a để biến nó thành mảng chứa ba giá trị 1,2,3
  • Giá trị được gán vào biến b bằng biểu thức kiểm tra phần tử số 2 có nằm trong mảng a hay không, kết quả trả về true nghĩa là số 2 có nằm trong mảng a
  • Giá trị được gán vào biến c bằng biểu thức kiểm tra phần tử số 6 có nằm trong mảng a hay không, kết quả trả về false nghĩa là số 6 không nằm trong mảng a
  • Giá trị được gán vào biến e bằng biểu thức kiểm tra phần tử số 7 được gán vào biến d có nằm trong mảng a hay không, kết quả trả về false nghĩa là số 7 không nằm trong mảng a

$trim(data)

Hàm trim này nhận vào một giá trị data và trả về giá trị đó sau khi loại bỏ khoảng trắng ở đầu và cuối. Nếu data không phải là một chuỗi văn bản, hàm sẽ chuyển đổi nó thành chuỗi trước khi loại bỏ khoảng trắng.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức xoá các khoảng trắng trong đoạn văn bản a bc được ghi vào trong hàm trim, khi đó biến a sẽ nhận chuỗi a bc sau khi loại bỏ khoảng trắng ở đầu và cuối
  • Giá trị được gán vào biến c bằng biểu thức xoá các khoảng trắng trong đoạn văn bản 1 2 345 được gán vào biến b được ghi vào trong hàm trim, khi đó biến c sẽ nhận chuỗi 1 2 3 45 sau khi loại bỏ khoảng trắng ở đầu và cuối

$match(value, regex, index, flags)

Hàm match này thực hiện việc tìm kiếm và trả về kết quả khớp của một biểu thức chính quy regex trong một chuỗi văn bản value. Hàm này có các tham số sau:

  • value: Chuỗi văn bản cần tìm kiếm
  • regex: Biểu thức chính quy để tìm kiếm
  • index: Chỉ số của kết quả khớp cần trả về (không bắt buộc, mặc định là -1)
  • flags: Các flag tùy chọn cho biểu thức chính quy (không bắt buộc, mặc định là rỗng)

Hàm này sẽ trả về:

  • Kết quả khớp toàn bộ dưới dạng chuỗi nếu index không được chỉ định
  • Kết quả khớp tại chỉ số index nếu index được chỉ định
  • Chuỗi rỗng nếu không tìm thấy kết quả khớp
Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức tìm kiếm trong chuỗi abc sau đó trả về đoạn văn bản khớp với biểu thức chính quy a
  • Giá trị được gán vào biến c bằng biểu thức tìm kiếm trong chuỗi abcabcAbcAbc được gán vào biến b sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Sử dụng regexFlags là i có nghĩa là không phân biệt hoa thường ở văn bản . Index là 0nghĩa là lấy phần tử đầu tiên phù hợp với biểu thức chính quy nếu có nhiều văn bản phù hợp. Do đó kết quả mình thấy lấy ra đoạn văn bản ab thay vì Ab như trong biểu thức chính quy
  • Giá trị được gán vào biến d bằng biểu thức tìm kiếm trong chuỗi abcabcAbcAbc được gán vào biến b sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Sử dụng regexFlags là i có nghĩa là không phân biệt hoa thường ở văn bản . Index là 1nghĩa là lấy phần tử thứ hai phù hợp với biểu thức chính quy nếu có nhiều văn bản phù hợp. Do đó kết quả mình thấy lấy ra đoạn văn bản undefined thay vì Ab như trong biểu thức chính quy bởi vì flags i chỉ lấy một phần tử đầu tiên
  • Giá trị được gán vào biến e bằng biểu thức tìm kiếm trong chuỗi abcabcAbcAbc được gán vào biến b sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Sử dụng regexFlags là g có nghĩa là lấy tất cả phần tử khớp với biểu thức chính quy và phân biệt hoa thường . Index là 0nghĩa là lấy phần tử đầu tiên phù hợp với biểu thức chính quy nếu có nhiều văn bản phù hợp. Do đó kết quả mình thấy lấy ra đoạn văn bản Ab như là Ab như trong biểu thức chính quy
  • Giá trị được gán vào biến f bằng biểu thức tìm kiếm trong chuỗi abcabcAbcAbc được gán vào biến b sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Sử dụng regexFlags là g có nghĩa là lấy tất cả phần tử khớp với biểu thức chính quy và phân biệt hoa thường . Index là 1nghĩa là lấy phần tử thứ hai phù hợp với biểu thức chính quy nếu có nhiều văn bản phù hợp. Do đó kết quả mình thấy lấy ra đoạn văn bản Ab như là Ab như trong biểu thức chính quy bởi vì flags g đã trả ra một danh sách văn bản gồm ["Ab","Ab"]
  • Giá trị được gán vào biến g bằng biểu thức tìm kiếm trong chuỗi abcabcAbcAbc được gán vào biến b sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Sử dụng regexFlags là g có nghĩa là lấy tất cả phần tử khớp với biểu thức chính quy và phân biệt hoa thường . Index là 1nghĩa là lấy phần tử thứ hai phù hợp với biểu thức chính quy nếu có nhiều văn bản phù hợp. Do đó kết quả mình thấy lấy ra đoạn văn bản ab thay vì là Ab như trong biểu thức chính quy bởi vì flags gi đã trả ra một danh sách văn bản không phân biệt hoa thường gồm ["ab","ab","Ab","Ab"]
  • Giá trị được gán vào biến i bằng biểu thức tìm kiếm trong chuỗi abc được gán vào biến h sau đó trả về đoạn văn bản khớp với biểu thức chính quy Ab. Do đó kết quả mình thấy lấy ra đoạn văn bản "" thay vì là Ab như trong biểu thức chính quy bởi vì mình không có flags nên sẽ phân biệt hoa thường, và trong chuỗi kia không có văn bản giống biểu thức chính quy

$join(data,sep=" ")

Hàm join này nối một mảng giá trị thành một chuỗi duy nhất, sử dụng một dấu phân cách được chỉ định. Nếu không cung cấp dấu phân cách, nó mặc định là một khoảng trắng. Nếu đầu vào không phải là một mảng hoặc không hợp lệ, nó trả về giá trị gốc.

Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Khi đó kết quả trả về sẽ như sau

  • Giá trị được gán vào biến a bằng biểu thức biến một biến thành mảng để chứa nhiều phần tử
  • Giá trị được gán vào biến b bằng biểu thức nối mảng a thành một chuỗi mới, vì không có sep nên mặc định các phần tử trong chuỗi cách nhau một khoảng trắng
  • Giá trị được gán vào biến c bằng biểu thức nối mảng a thành một chuỗi mới, vì có sep="-" nên các phần tử trong chuỗi cách nhau một khoảng dấu -
Ví dụ khi sử dụng chức năng Đặt Cookie của node Cookie

Ở đây mình sẽ sử dụng file json để sử dụng nhập cookie vào profile mong muốn.

Đây là profile trước khi nhập cookie

cookie

Đầu tiên mình sẽ sử dụng node Read File Text để có thể đọc file json chứa cookie. Để có thể sử dụng dữ liệu đó ở các bước sau mình sẽ gán cho một biến là a

cookie

Sau đó mình sẽ sử dụng node Cookie với lựa chọn Đặt cookie để có thể nhập giá trị cookie được đọc từ file. Bên trong phần điền giá trị mình sẽ sử dụng biểu thức {{$join([variables.a])}} để có thể chuyển dữ liệu từ nhiều dòng thành một hàng(do sử dụng node Read File Text sẽ chuyển dữ liệu thành văn bản nhiều dòng)

cookie

Sau khi chạy xong, cookie của mình sẽ được thêm vào profile

cookie

$find(data, path, value)

Hàm này sẽ tìm kiếm một value trong một đối tượng hoặc mảng data lồng nhau, theo một path được chỉ định.

Dưới đây là mô tả các giá trị trong hàm

  • path là một chuỗi gồm các khóa được cho các giá trị
  • Hàm này lặp qua từng khóa trong path, truy cập thuộc tính tương ứng trong đối tượng hoặc mảng data.
  • Nếu thuộc tính hiện tại là một mảng, nó sử dụng khóa làm chỉ số; ngược lại, nó sử dụng khóa làm tên thuộc tính.
  • Hàm này trả về giá trị đầu tiên khớp với value được chỉ định, hoặc một chuỗi rỗng nếu không tìm thấy khớp.
Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Ở đây mình sẽ tạo một mảng chứa các đối tượng trong node JavaScript code sau đó gán giá trị mảng đó ra ngoài quy trình để sử dụng với công thức omniloginSetVariable

Sau đó dùng biểu thức {{$find([variables.test],'user.name','Alice')}} trong node Ghi Log để ghi ra kết quả tìm kiếm bằng hàm find, ở đây mình dùng biểu thức user.name tương ứng với path bởi vì giá trị name mình đang tìm kiếm nằm trong đối tượng user, nếu thay user bằng name kèm giá trị thì chỉ cần điền name, giá trị Alice tương ứng với value

Khi đó kết quả trả về sẽ như sau

  • Giá trị được in ra trong node Ghi Log bởi hàm find với biểu thức tìm kiếm name bằng Alice trong biến test chứa một mảng , khi đó hàm trả về đối tượng đầu tiên phù hợp với điều kiện

$findAll(data, path, value)

Đây là một hàm lọc một đối tượng hoặc mảng data để tìm tất cả các phần tử khớp với một giá trị value tại một đường dẫn path cụ thể.

Dưới đây là mô tả các giá trị trong hàm

  • Nếu data không phải là đối tượng hoặc mảng, trả về nó như là.
  • Chia đường dẫn path thành các khóa riêng lẻ sử dụng dấu chấm.
  • Lặp qua từng khóa trong đường dẫn và điều hướng qua đối tượng hoặc mảng data tương ứng.
  • Nếu giá trị hiện tại là đối tượng hoặc mảng, sử dụng khóa để truy cập thuộc tính hoặc phần tử của nó.
  • Nếu giá trị hiện tại là mảng, sử dụng khóa như một chỉ số để truy cập phần tử của nó.
  • Nếu giá trị cuối cùng khớp với tham số value, bao gồm nó trong kết quả lọc.
  • Trả về kết quả lọc dưới dạng mảng. Nếu không tìm thấy kết quả khớp, trả về mảng rỗng.
Ví dụ

Mình có thể sử dụng hàm ở các trường hợp như sau.

Ở đây mình sẽ tạo một mảng chứa các đối tượng trong node JavaScript code sau đó gán giá trị mảng đó ra ngoài quy trình để sử dụng với công thức omniloginSetVariable

Sau đó dùng biểu thức {{$findAll([variables.data], 'name','Bob')}} trong node Ghi Log để ghi ra kết quả tìm kiếm bằng hàm find, ở đây mình dùng biểu thức name tương ứng với path, giá trị Bob tương ứng với value

Khi đó kết quả trả về sẽ như sau

  • Các giá trị được in ra trong node Ghi Log bởi hàm findAll với biểu thức tìm kiếm name bằng Bob trong biến data chứa một mảng , khi đó hàm trả về tất cả đối tượng phù hợp với điều kiện