# Excel

### File[​](https://docs.omnilog.in/blocks/spreadsheet.html#file) <a href="#file" id="file"></a>

Chọn đường dẫn file excel trong máy tính

### Phạm vi[​](https://docs.omnilog.in/blocks/spreadsheet.html#pham-vi) <a href="#pham-vi" id="pham-vi"></a>

Phạm vi giá trị của các ô mà bạn muốn lấy, cập nhật hoặc xoá. Bạn có thể xác định phạm vi ô bằng cách sử dụng Kí hiệu A1 like `Sheet1!A1:B2` hoặc `A1:B2` hoặc `A1` (viết ngắn gọn của `A1:A1`)

### Lấy giá trị ô bảng tính[​](https://docs.omnilog.in/blocks/spreadsheet.html#lay-gia-tri-o-bang-tinh) <a href="#lay-gia-tri-o-bang-tinh" id="lay-gia-tri-o-bang-tinh"></a>

Lấy giá trị các ô của bảng tính của 1 file excel

* **Khoá Tham chiếu**\
  Dùng để định danh dữ liệu đọc được. Tham chiếu từ các khối sử dụng như Lặp dữ liệu, Xuất dữ liệu, ...
* **Sử dụng hàng đầu tiên làm từ khoá**\
  Sử dụng hàng đầu tiên của bảng tính làm khoá đối tượng. Ví dụ khi bạn có một bảng tính như thế này.

<table><thead><tr><th width="100">name</th><th width="100">age</th></tr></thead><tbody><tr><td>foo</td><td>22</td></tr><tr><td>bar</td><td>23</td></tr></tbody></table>

```json
// Khi tắt
[["name", "age"], ["foo", 22], ["bar", 23]]

// Khi bật
[{ "name": "foo", "age": 22 }, { "name": "bar", "age": 23 }]
```

**Tên cột dùng làm khoá chính**

Trong trường hợp bạn muốn dùng chính xác dữ liệu với profile đang chạy thì bạn chọn lựa chọn này

Ví dụ khi bạn có một bảng tính như thế này.

<table><thead><tr><th width="100">profileId</th><th width="100" align="center">name</th><th width="100" align="center">age</th></tr></thead><tbody><tr><td>2</td><td align="center">     foo</td><td align="center">      22</td></tr><tr><td>3</td><td align="center">     bar</td><td align="center">      23</td></tr></tbody></table>

Bạn muốn khi chạy profile có id là 2 thì sẽ dùng giá trị là `foo` thì bạn dùng lựa chọn này, khi đó bạn có thể lấy ra giá trị `foo` bằng biểu thức `{{googleSheets.referenceKey.[profileId].name}}`, khi đó khi chạy profile có id là 2 sẽ lấy ra giá trị `foo`, profile có id là 3 sẽ lấy ra giá trị `bar`

### Lấy phạm vi bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.html#lay-pham-vi-bang-tinh) <a href="#lay-pham-vi-bang-tinh" id="lay-pham-vi-bang-tinh"></a>

Lấy giá trị phạm vi của bảng tính sau đó gán giá trị đó cho biến hoặc bảng mong muốn

* **Phạm vi bảng tính**
  * **Gán cho biến**: gán phạm vi của dữ liệu cho một biến
  * **Chèn vào bảng**: gán phạm vi của dữ liệu cho một cột

## Cập nhập giá trị ô bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.html#cap-nhap-gia-tri-o-bang-tinh) <a href="#cap-nhap-gia-tri-o-bang-tinh" id="cap-nhap-gia-tri-o-bang-tinh"></a>

#### Tuỳ chọn nhập giá trị[​](https://docs.omnilog.in/blocks/google-sheets.html#tuy-chon-nhap-gia-tri) <a href="#tuy-chon-nhap-gia-tri" id="tuy-chon-nhap-gia-tri"></a>

Xác định cách diễn giải dữ liệu đầu vào, mặc định là `RAW`.

* **RAW**: Các giá trị người dùng đã nhập sẽ không được phân tích cú pháp và sẽ được lưu trữ nguyên trạng.
  * Ví dụ: Giá trị đầu vào là : `"123"` thì định dạng lưu trữ là: `"123"`
* **USER\_ENTERED**: Các giá trị sẽ được phân tích cú pháp như thể người dùng nhập chúng vào giao diện người dùng. Các số sẽ vẫn ở dạng số nhưng các chuỗi có thể được chuyển đổi thành số, ngày, v.v. theo các quy tắc tương tự được áp dụng khi nhập văn bản vào một ô thông qua Giao diện người dùng Google Sheet.
  * Ví dụ giá trị đầu vào là: `"123"` thì định dạng lưu trữ là: `123`

#### Dữ liệu từ[​](https://docs.omnilog.in/blocks/google-sheets.html#du-lieu-tu) <a href="#du-lieu-tu" id="du-lieu-tu"></a>

Nguồn dữ liệu để cập nhật bảng tính, mặc định là bảng

* **Bảng**: lấy dữ liệu đã được chèn vào bảng
  * **Ghi key vào hàng đầu**: Sử dụng các cột làm hàng đầu tiên trên bảng tính.
* **Tuỳ chỉnh**: dữ liệu được nhập phải là một mảng thuộc kiểu dữ liệu mảng với cú pháp JSON hợp lệ.

json

```
["1","2","3"]
```

## Chèn hoặc thêm các giá trị ô bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.html#chen-hoac-them-cac-gia-tri-o-bang-tinh) <a href="#chen-hoac-them-cac-gia-tri-o-bang-tinh" id="chen-hoac-them-cac-gia-tri-o-bang-tinh"></a>

Lấy giá trị phạm vi của bảng tính sau đó gán giá trị đó cho biến hoặc bảng mong muốn

#### Tuỳ chọn nhập giá trị[​](https://docs.omnilog.in/blocks/google-sheets.html#tuy-chon-nhap-gia-tri-1) <a href="#tuy-chon-nhap-gia-tri-1" id="tuy-chon-nhap-gia-tri-1"></a>

Xác định cách diễn giải dữ liệu đầu vào, mặc định là `RAW`.

* **RAW**: Các giá trị người dùng đã nhập sẽ không được phân tích cú pháp và sẽ được lưu trữ nguyên trạng.
  * Ví dụ: Giá trị đầu vào là : `"123"` thì định dạng lưu trữ là: `"123"`
* **USER\_ENTERED**: Các giá trị sẽ được phân tích cú pháp như thể người dùng nhập chúng vào giao diện người dùng. Các số sẽ vẫn ở dạng số nhưng các chuỗi có thể được chuyển đổi thành số, ngày, v.v. theo các quy tắc tương tự được áp dụng khi nhập văn bản vào một ô thông qua Giao diện người dùng Google Sheet.
  * Ví dụ giá trị đầu vào là: `"123"` thì định dạng lưu trữ là: `123`

#### Chèn tuỳ chọn dữ liệu[​](https://docs.omnilog.in/blocks/google-sheets.html#chen-tuy-chon-du-lieu) <a href="#chen-tuy-chon-du-lieu" id="chen-tuy-chon-du-lieu"></a>

* **OVERWRITE**:
* **INSERT\_ROWS**:

#### Dữ liệu từ[​](https://docs.omnilog.in/blocks/google-sheets.html#du-lieu-tu-1) <a href="#du-lieu-tu-1" id="du-lieu-tu-1"></a>

Nguồn dữ liệu để cập nhật bảng tính, mặc định là bảng

* **Bảng**: lấy dữ liệu đã được chèn vào bảng
  * **Ghi key vào hàng đầu**: Sử dụng các cột làm hàng đầu tiên trên bảng tính.
* **Tuỳ chỉnh**: dữ liệu được nhập phải là một mảng thuộc kiểu dữ liệu mảng với cú pháp JSON hợp lệ.

json

```
["1","2","3"]
```

## Xoá giá trị ô bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.html#xoa-gia-tri-o-bang-tinh) <a href="#xoa-gia-tri-o-bang-tinh" id="xoa-gia-tri-o-bang-tinh"></a>

Xoá giá trị của bảng tính theo phạm vi đã chọn

### Truy cập dữ liệu trang tính[​](https://docs.omnilog.in/blocks/google-sheets.html#truy-cap-du-lieu-trang-tinh) <a href="#truy-cap-du-lieu-trang-tinh" id="truy-cap-du-lieu-trang-tinh"></a>

Để truy cập các giá trị bảng tính từ đầu vào của node, bạn có thể sử dụng các biểu thức như cú pháp `{{ googleSheets.referenceKey.path }}`.

* Ví dụ trường hợp lấy dữ liệu từ node Google Sheet với khoá tham chiếu là `data` và dữ liệu trong google sheet như bảng sau

<table><thead><tr><th width="100">name</th><th width="100">age</th></tr></thead><tbody><tr><td>An</td><td>18</td></tr><tr><td>Manh</td><td>23</td></tr></tbody></table>

Để lấy giá trị `name` của hàng đầu tiên chúng ta dùng cú pháp `{{googleSheets.data.0.name}}`

## Sử dụng trong trường hợp thực tế[​](https://docs.omnilog.in/blocks/spreadsheet.html#su-dung-trong-truong-hop-thuc-te) <a href="#su-dung-trong-truong-hop-thuc-te" id="su-dung-trong-truong-hop-thuc-te"></a>

Bài toán: Tôi có 1 danh sách tài khoản mật khẩu, cần kiểm tra xem có đăng nhập được hay không. Các node sau sẽ tiến hành đọc lần lượt từng hàng, tiến hành logic kiểm tra tài khoản, rồi ghi trạng thái dòng ô trạng thái tương ứng

<table><thead><tr><th width="121" align="center"></th><th width="129" align="center"></th><th width="133" align="center"></th></tr></thead><tbody><tr><td align="center">username</td><td align="center">password</td><td align="center">trạng thái</td></tr><tr><td align="center">user001</td><td align="center">pass001</td><td align="center"></td></tr><tr><td align="center">user002</td><td align="center">pass002</td><td align="center"></td></tr></tbody></table>

<figure><img src="https://1203287464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdRjgVNbD6mYG9CtKFllo%2Fuploads%2FbwKG1xnjNqLLMTTmC0MM%2F6.PNG?alt=media&#x26;token=381e1ec4-1959-442f-8554-b49080924e41" alt=""><figcaption></figcaption></figure>

Ở đây chúng ta có 5 khối chính:

* 1 khối đọc dữ liệu excel (khối đầu tiên sau khối bắt đầu): Khối này chịu trách nhiệm đọc dữ liệu profile (xem phần dưới)
* Khối chèn dữ liệu và khối HttpRequest, ở đây là logic chính của các bạn. Ở ví dụ thì mình đang lấy thông tin trên 1 hàng đọc được từ file excel, gán vào biến để sử dụng. Khối HttpRequest sẽ là khối kiếm ra xem thông tin username, password có hợp lệ hay không
* Hai khối ghi dữ liệu: Tuỳ thuộc vào kết quả, thì sẽ chạy vào khối tương ứng để cập nhật dữ liệu
