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
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ím
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ết
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.
[
{ "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}}
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}}
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ạiGiá 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
đến100
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
đến10
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
đến10.4
khi đó sẽ luôn tạo ra một chữ số thập phânGiá 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ếna
đếnb
$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
đến100
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
đến10
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
đến10.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ươngGiá 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ếna
đếnb
$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ảnGiá 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àoGiá 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ếnb
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ồmchữ 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ồmchữ thường và số
sau đó thêm đuổi @gmail.com để có thể tạo ngẫu nhiên một gmailGiá trị được gán vào biến
c
bằng biểu thức tạo ra một chuỗi chỉ gồmchữ 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 địnhngà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ạngngà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ạngnă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
Khi đó giá trị sau khi chạy sẽ hiển thị như sau
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ếnd
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
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 phantach
là variables.phantach
. Khi đó biểu thức để tách chuỗi thành mảng như sau
Khi đó giá trị trả về sẽ là một mảng chứa các giá trị được nhập vào
$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
Khi đó giá trị trả về sẽ như sau
- 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
Khi đó giá trị trả về sẽ như sau
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ạiGiá 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ứ 5
là a
và 6
là b
đế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ỗiHello,world!
theo vị trí phần từ từ1
đến6
- Giá trị được gán vào biến
c
bằng biểu thức cắt biếnb
chứa chuỗiHello,world!
theo vị trí phần từ từ1
đến6
- Giá trị được gán vào biến
f
bằng biểu thức cắt biếnb
chứa chuỗiHello,world!
theo phạm vi mong muốn được chèn vào các biếnd
là1
e
là6
, khi đó phạm vi cắt sẽ là từ1
đến6
- Giá trị được gán vào biến
g
bằng biểu thức cắt biếng
chứa chuỗihello 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ỗirất
trong đoạn văn bản thành chuỗidễ 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ỗixịn
nằm trong biếnb
chứa văn bảnOmniLogin rất xịn
thành chuỗituyệ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ỗixịn
được gán vào biếnd
nằm trong một biếnb
chứa văn bảnOmniLogin rất xịn
thành chuỗituyệ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
, search
và replace
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ỗiO-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ảnOmniLogin 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ếnb
chứa văn bảnOmniLogin rất xịn
thành ký tự-
được gán trong biếne
$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ỗiHELLO WORLD!
thành chuỗihello world!
- Giá trị được gán vào biến
c
bằng biểu thức thay đổi một chuỗiOmniLogin
được gán vào biếnb
thành chuỗiomnilogin
$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ỗihello world
thành chuỗiHELLO WORLD
- Giá trị được gán vào biến
c
bằng biểu thức thay đổi một chuỗiOmniLogin
được gán vào biếnb
thành chuỗiOMNILOGIN
$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ố22
và5
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ếnb
và5
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ếnb
và5
nằm trong biếnd
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ấnsyntax
: 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ếna
$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ếna
$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ảnga
hay không, kết quả trả vềtrue
nghĩa là số2
có nằm trong mảnga
- 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ảnga
hay không, kết quả trả vềfalse
nghĩa là số6
không nằm trong mảnga
- 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ếnd
có nằm trong mảnga
hay không, kết quả trả vềfalse
nghĩa là số7
không nằm trong mảnga
$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ảna bc
được ghi vào trong hàmtrim
, khi đó biếna
sẽ nhận chuỗia 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ản1 2 345
được gán vào biếnb
được ghi vào trong hàmtrim
, khi đó biếnc
sẽ nhận chuỗi1 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ỗiabc
sau đó trả về đoạn văn bản khớp với biểu thức chính quya
- Giá trị được gán vào biến
c
bằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbc
được gán vào biếnb
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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à0
nghĩ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ảnab
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ỗiabcabcAbcAbc
được gán vào biếnb
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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à1
nghĩ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ảnundefined
thay vìAb
như trong biểu thức chính quy bởi vì flagsi
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ỗiabcabcAbcAbc
được gán vào biếnb
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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à0
nghĩ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ảnAb
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ỗiabcabcAbcAbc
được gán vào biếnb
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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à1
nghĩ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ảnAb
như làAb
như trong biểu thức chính quy bởi vì flagsg
đã 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ỗiabcabcAbcAbc
được gán vào biếnb
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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à1
nghĩ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ảnab
thay vì làAb
như trong biểu thức chính quy bởi vì flagsgi
đã 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ỗiabc
được gán vào biếnh
sau đó trả về đoạn văn bản khớp với biểu thức chính quyAb
. 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ảnga
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ảnga
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
Đầ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
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)
Sau khi chạy xong, cookie của mình sẽ được thêm vào profile
$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ảngdata
. - 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àmfind
với biểu thức tìm kiếmname
bằngAlice
trong biếntest
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àmfindAll
với biểu thức tìm kiếmname
bằngBob
trong biếndata
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