Biểu Thức
Dưới đây là các biểu thức người dùng 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ó thể thêm dữ liệu từ file vào dữ liệu chung.
Ví dụ
Đầu tiên người dùng 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 người dùng sẽ mở trang google.com bằng node Mở liên kết,tiếp đó người dùng 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. Khi đó giá trị được in ra chính là đường dẫn của trang người dùng vừa mở. 
Truy Cập Dữ Liệu Khác Bên Trong Biểu Thức
Để truy cập dữ liệu khác trong biểu thức, người dùng phải đặt biểu thức trong dấu ngoặc [].. Ví dụ không thể dùng biểu thức {{globalData.{{variables.a}}}} mà phải ghi {{globalData.[variables.a]}}
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.
Để định dạng ngày hiện tại, có thể sử dụng dateFormat làm tham số đầu tiên., ví dụ 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ụ
Người dùng có thể dùng hàm date với nhiều cách như sau


Với biểu thức trên, người dùng sẽ hiển thị ra các giá trị sau

Giá trị được gán vào biến
abằ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ốiGiá trị được gán vào biến
bbằ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
cbằ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ốiGiá trị được gán vào biến
dbằ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
ebằ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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.

Khi đó khi chạy người dùng sẽ thấy các biến sẽ nhận giá trị sau 
Giá trị được gán vào biến
abằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến100Giá trị được gán vào biến
bbằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến10Giá trị được gán vào biến
cbằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến10.4khi đó sẽ luôn tạo ra một chữ số thập phânGiá trị được gán vào biến
dbằ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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.

Khi đó khi chạy người dùng sẽ thấy các biến sẽ nhận giá trị sau

Giá trị được gán vào biến
abằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến100Giá trị được gán vào biến
bbằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến10Giá trị được gán vào biến
cbằng biểu thức tạo ngẫu nhiên một số trong khoảng từ0đến10.4vì 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
dbằ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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.


Khi đó khi chạy người dùng sẽ thấy các biến sẽ nhận giá trị sau

Giá trị được gán vào biến
abằ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
bbằ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 người dùng 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
cbằ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 người dùng nha, khi đó độ dài của chuỗi đó sẽ ra kết quả là 16
- Giá trị được gán vào biến
ebằ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 đó. Hàm này dùng để tạo mã OTP từ chuỗi xác thực hai yếu tố (2FA).
Ví dụ
Người dùng 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
abằ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
cbằng biểu thức tạo mã OTP dựa trên một biếnbnhập vào
Chú ý
Người dùng 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ụ
Người dùng 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
abằ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
bbằ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
cbằ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 người dùng muốn thay đổi format thì có thể thêm dateFormat sau pham vi thời gian
Ví dụ
Người dùng 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
abằ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ămGiá trị được gán vào biến
bbằ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ămGiá trị được gán vào biến
cbằ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 người dùng nhập một mảng vào trong hàm.
Ví dụ
Người dùng 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 tương tự hàm randPick, vì cả hai đều chọn ngẫu nhiên một phần tử 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 người dùng 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ụ
Người dùng 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 người dùng 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
abằ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
cbằ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
ebằ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 người dùng là các giá trị cách nhau bởi dấu xuống dòng 
Khi đó người dùng cần không thể sử dụng biểu thức như các ví dụ trên. Người dùng 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 value và incrementBy. Nếu một trong hai không phải là số, giá trị ban đầu sẽ được trả về
Ví dụ
Người dùng 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
abằng biểu thức cộng hai số - Giá trị được gán cho biến
bbằ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
cbằ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ừ incrementBy 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ụ
Người dùng 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
abằng biểu thức trừ hai sốGiá trị được gán cho biến
bbằ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
cbằ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ụ
Người dùng 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
abằng biểu thức nhân hai số với nhau - Giá trị được gán vào biến
abằ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
abằ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ụ
Người dùng 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
abằng biểu thức chia hai số với nhau - Giá trị được gán vào biến
abằ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
abằ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. Ví dụ người dùng 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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.



- Giá trị được gán vào biến
abằ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
cbằng biểu thức cắt biếnbchứa chuỗiHello,world!theo vị trí phần từ từ1đến6 - Giá trị được gán vào biến
fbằng biểu thức cắt biếnbchứa chuỗiHello,world!theo phạm vi mong muốn được chèn vào các biếndlà1elà6, khi đó phạm vi cắt sẽ là từ1đến6 - Giá trị được gán vào biến
gbằng biểu thức cắt biếngchứa chuỗihello everytheo 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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.

- Giá trị được gán vào biến
abằng biểu thức thay đổi chuỗirấttrong đ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
cbằng biểu thức thay đổi đoạn chuỗixịnnằm trong biếnbchứa văn bảnOmniLogin rất xịnthành chuỗituyệt vờiđược nhập vào - Giá trị được gán vào biến
fbằng biểu thức thay đổi đoạn chuỗixịnđược gán vào biếndnằm trong một biếnbchứa văn bảnOmniLogin rất xịnthà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ụ
Người dùng 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
abằng biểu thức thay đổi tất cả ký tự-trong một chuỗiO-m-niloginthành ký tự"" - Giá trị được gán vào biến
cbằng biểu thức thay đổi tất cả ký tựnằm trong chuỗi nằm trong biếnbchứa văn bảnOmniLogin rất xịnthành ký tự-được nhập vào - Giá trị được gán vào biến
fbằng biểu thức thay đổi tất cả ký tựđược gán vào biếndtrong một chuỗi được gán vào biếnbchứa văn bảnOmniLogin rất xịnthà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ụ
Người dùng 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
abằ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
cbằng biểu thức thay đổi một chuỗiOmniLoginđược gán vào biếnbthà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ụ
Người dùng 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
abằng biểu thức thay đổi một chuỗihello worldthành chuỗiHELLO WORLD - Giá trị được gán vào biến
cbằng biểu thức thay đổi một chuỗiOmniLoginđược gán vào biếnbthà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ụ
Người dùng 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
abằng biểu thức chia 2 số22và5với nhau để ra giá trị số dư là2 - Giá trị được gán vào biến
cbằng biểu thức chia 2 số12nằm trong biếnbvà5với nhau để ra giá trị số dư là2 - Giá trị được gán vào biến
ebằng biểu thức chia 2 số12nằm trong biếnbvà5nằm trong biếndvớ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ụ
Người dùng 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ụ
Người dùng 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
bbằ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ụ
Người dùng 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
bbằ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ụ
Người dùng 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
bbằng biểu thức kiểm tra phần tử số2có nằm trong mảngahay không, kết quả trả vềtruenghĩa là số2có nằm trong mảnga - Giá trị được gán vào biến
cbằng biểu thức kiểm tra phần tử số6có nằm trong mảngahay không, kết quả trả vềfalsenghĩa là số6không nằm trong mảnga - Giá trị được gán vào biến
ebằng biểu thức kiểm tra phần tử số7được gán vào biếndcó nằm trong mảngahay không, kết quả trả vềfalsenghĩa là số7khô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ụ
Người dùng 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
abằ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ếnasẽ nhận chuỗia bcsau khi loại bỏ khoảng trắng ở đầu và cuối - Giá trị được gán vào biến
cbằ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ếncsẽ nhận chuỗi1 2 3 45sau 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ụ
Người dùng 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
abằng biểu thức tìm kiếm trong chuỗiabcsau đó 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
cbằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbcđược gán vào biếnbsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Sử dụng regexFlags làicó 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ả người dùng thấy lấy ra đoạn văn bảnabthay vìAbnhư trong biểu thức chính quy - Giá trị được gán vào biến
dbằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbcđược gán vào biếnbsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Sử dụng regexFlags làicó 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ả người dùng thấy lấy ra đoạn văn bảnundefinedthay vìAbnhư trong biểu thức chính quy bởi vì flagsichỉ lấy một phần tử đầu tiên - Giá trị được gán vào biến
ebằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbcđược gán vào biếnbsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Sử dụng regexFlags làgcó 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ả người dùng thấy lấy ra đoạn văn bảnAbnhư làAbnhư trong biểu thức chính quy - Giá trị được gán vào biến
fbằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbcđược gán vào biếnbsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Sử dụng regexFlags làgcó 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ả người dùng thấy lấy ra đoạn văn bảnAbnhư làAbnhư 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
gbằng biểu thức tìm kiếm trong chuỗiabcabcAbcAbcđược gán vào biếnbsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Sử dụng regexFlags làgcó 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ả người dùng thấy lấy ra đoạn văn bảnabthay vì làAbnhư 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
ibằng biểu thức tìm kiếm trong chuỗiabcđược gán vào biếnhsau đó trả về đoạn văn bản khớp với biểu thức chính quyAb. Do đó kết quả người dùng thấy lấy ra đoạn văn bản""thay vì làAbnhư trong biểu thức chính quy bởi vì người dùng 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ụ
Người dùng 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
abằ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
bbằng biểu thức nối mảngathà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
cbằng biểu thức nối mảngathà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 người dùng 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 người dùng 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 người dùng sẽ gán cho một biến là a

Sau đó, người dùng 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ị người dùng 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 người dùng 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
pathlà 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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.
Ở đây người dùng 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 người dùng dùng biểu thức user.name tương ứng với path bởi vì giá trị name người dùng đ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 Logbởi hàmfindvới biểu thức tìm kiếmnamebằngAlicetrong biếntestchứ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
paththà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
datatươ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ụ
Người dùng có thể sử dụng hàm ở các trường hợp như sau.
Ở đây người dùng 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 người dùng 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 Logbởi hàmfindAllvới biểu thức tìm kiếmnamebằngBobtrong biếndatachứ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
$stringify(value)
Dùng để chuyển đổi một đối tượng hoặc một giá trị JavaScript value thành một chuỗi JSON (JSON string). Mục đích chính là để "đóng gói" dữ liệu lại, giúp dễ dàng gửi đi qua mạng
Ví dụ
Chẳng hạn, người dùng khi muốn chuyển dữ liệu của biến b lên một Google Sheet qua api bằng node HTTP Request
Đầu tiên vào link https://script.google.com/home sau đó thao tác theo ảnh như sau





Ở đoạn này người dùng xoá giá trị có sẵn rồi dán đoạn code này vào
function doPost(e) {
try {
const spreadsheetId = e.parameter.spreadsheetId;
const range = e.parameter.range;
const obj = JSON.parse(e.postData.contents);
const values = obj;
const valueInputOption = "USER_ENTERED";
Sheets.Spreadsheets.Values.update({ values }, spreadsheetId, range, {valueInputOption: valueInputOption});
return ContentService.createTextOutput("ok");
} catch(e) {
return ContentService.createTextOutput(JSON.stringify(e));
}
}
function doGet(e) {
return ContentService.createTextOutput("Success!");
}










Cuối cùng copy giá trị URL này

Giờ người dùng sẽ sử dụng URL này ở trong node HTTP Request như sau
Ở Địa chỉ đích, người dùng sẽ điền theo công thức URL?googlesheetId=a&range=b với a là id của Google Trang tính muốn chèn trạng thái vào, b là ô muốn cập nhật giá trị. Trường hợp có nhiều trang tính như: trang1 trang2 thì người dùng có thể ghi giá trị range=trang2!b. Khi sử dụng ở trường hợp này thì sẽ ghi như sau https://script.google.com/macros/s/AKfycbxw6yFtbqapqJ07J9gwyKUoGhXjc_kIehxT1HPO9ZUwCal-iw4SIjB53ahIs-WNEBXdtA/exec?spreadsheetId=1qDb4fe4dWFHfd1HIYkc8JPTd0IoYpsRVyTwfJhaZcV8&range=A1

Tiếp theo, thông thường phần nội dung người dùng sẽ điền văn bản muốn chèn vào như sau, trường hợp là biến hoặc giá trị từ biểu thức bất kỳ thì người dùng có thể ghi như sau [["{{variables.b}}"]] nếu muốn chèn giá trị biến b vào cột

Tuy nhiên có thể áp dụng hàm stringify vào như sau
[[{{$stringify([variables.b])}}]]
Ở mục Phản hồi, người dùng gán giá trị phản hồi cho một biến status để xác định trạng thái đã được chèn hay chưa

Nếu đã chèn thành công thì biến nhận giá trị như sau

