# Google Sheets

Trước khi sử dụng node này, trước tiên bạn cần cung cấp cho Gemlogin quyền truy cập vào bảng tính.

* Bạn chia sẻ bảng tính công khai .

Khi bạn chia sẻ bảng tính công khai, Automation chỉ có quyền truy cập đọc vào bảng tính đó.\
Và nếu bạn có kế hoạch cập nhật các giá trị ô của bảng tính, bạn cần chia sẻ bảng tính với tài khoản Automation. Để làm điều đó, hãy mở bảng tính bạn muốn chia sẻ, nhấp vào nút chia sẻ ở trên cùng và chia sẻ công khai.

## Id bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.html#id-bang-tinh) <a href="#id-bang-tinh" id="id-bang-tinh"></a>

Id Bảng tính chứa chữ cái, số, dấu gạch nối hoặc dấu gạch dưới. Và bạn có thể tìm thấy nó trong URL Google trang tính

<https://docs.google.com/spreadsheets/d/><mark style="color:yellow;">1TPWKVWjWeIfDI2A77WoZ8PHXLzgWhgOtvQaWL6xTa58</mark>/edit?gid=0#gid=0

## Phạm vi[​](https://docs.omnilog.in/blocks/google-sheets.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](https://developers.google.com/sheets/api/guides/concepts#expandable-1) like `Sheet1!A1:B2` hoặc `A1:B2`, hoặc Kí hiệu R1C1 like `Sheet1!R1C1:R2C2` hoặc `R1C1:R2C2`

## Lấy giá trị ô bảng tính[​](https://docs.omnilog.in/blocks/google-sheets.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ủa bảng tính bằng đường link của google sheet đó

* **Khoá tham chiếu**\
  Tham chiếu từ khoá để xác định dữ liệu google trang tính.
* **Sử dụng hàng đầu tiên làm từ khoá**\
  Khi chọn sử dụng hàng đầu tiên của bảng tính làm khoá thì các giá trị ở cột tương ứng sẽ được định danh, và các bạn có thể lấy ra các giá trị đó dựa vào khoá đó.

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

<table data-full-width="true"><thead><tr><th>name</th><th>age</th></tr></thead><tbody><tr><td>foo</td><td>22</td></tr><tr><td>bar</td><td>23</td></tr></tbody></table>

{% code title="" %}

```json
// Không chọn hàng đầu tiên là khoá 
[["name", "age"], ["foo", 22], ["bar", 23]]

// Chọn hàng đầu tiên là khoá
[{ "name": "foo", "age": 22 }, { "name": "bar", "age": 23 }]
```

{% endcode %}

## **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}}`
