Bài 10: Đọc Ghi Mảng (Array) App Script
https://hocggsheet.com/doc-ghi-mang-array-app-script/
Mảng (Array) là một trong những thành phần cơ bản và không thể thiếu của Java Script cũng như App Script. Để sử dụng mảng thành thạo, bạn sẽ cần nắm chắc kiến thức cơ bản. Trong bài này, hocggsheet.com sẽ giới thiệu đến với các bạn cách Đọc Ghi Mảng từ App Script ra Google Sheet.
Vài điều cần nắm rõ
Đọc ghi mảng từ App Script ra Google Sheet khác với ghi dải ô ra dải ô trong Google Sheet vì nó yêu cầu khắt khe hơn
Hàm getValues() và setValues() luôn trả về kết quả dưới dạng Mảng 2 chiều
Tùy dải ô có kích thước hàng cột như thế nào mà ta sử dụng các mảng tương ứng
File luyện tập cho phần Đọc Ghi Mảng
Các bạn Tạo bản sao (Make a copy) về Drive file bên dưới để tiến hành luyện tập nhé
https://docs.google.com/spreadsheets/d/1A87WquX2EqGaRy4hIAszP9ztofLovS7fbN_l9-9t8Is/edit?usp=sharing
1. Dải ô có 1 hàng – nhiều cột
Cho dải ô A1:C1
Cho dải ô A1:C1 như hình, dải ô này có kích thước là 1 hàng và 3 cột. Mục tiêu của chúng ta hiện giờ là ghi mảng arr có 3 phần từ a, b, c vào dải ô trên
Tuy nhiên, nếu chỉ đơn thuần là dùng setValues() thì chắc chắn sẽ xảy ra lỗi
Lỗi khi đọc ghi mảng
Để giải quyết vấn đề này, trước tiên chúng ta cần biết định dạng của mảng arr và dải ô A1:C1 là gì. Ở đây mình sẽ dùng getValues() để ghi 2 cái này vào file log
Như các bạn đã thấy, mảng arr định dạng là Mảng 1 chiều, được bao bọc bởi 1 cặp dấu ngoặc vuông ở đầu và cuối. Còn dải ô A1:C1 là mảng 2 chiều, gồm có 1 phần tử mẹ và bên trong nó có 3 phần tử con.
Câu hỏi đặt ra là: làm thế nào để chuyển từ mảng 1 chiều về mảng 2 chiều có 1 phần tử mẹ và nhiều phần tử con
Rất đơn giản thôi, bạn chỉ cần thêm 1 cặp dấu ngoặc vuông ở trước và sau mảng arr
Vậy là ta đã chuyển đổi thành công giữa mảng 1 chiều arr về định dạng của dải ô A1:C1. Bây giờ ta mới có thể dùng setValues() để ghi [arr] vào A1:C1
2. Dải ô có 1 cột – nhiều hàng
Dải ô A4:A6
Tiếp theo là dải ô A4:A6. Trước khi Đọc Ghi mảng, hãy cùng hocggsheet.com phân tích một chút nhé
A4:A6 là dải ô có 1 cột và 3 hàng. Định dạng của nó sẽ rất khác so với dải ô A1:C1 ở trên. Trước tiên, hãy thử ghi mảng arr gồm 3 kí tự a, b, c và A4:A6 ra file log
Như ở trên mình đã nói, mảng arr là mảng 1 chiều. Còn khi dùng getValues để lấy giá trị của dải ô A4:A6, thì ta lại được mảng 2 chiều. Bao gồm 3 phần tử mẹ (được bao bọc bởi [ ]), mỗi phần tử mẹ có 1 phần tử con
Vậy làm thế nào để chuyển đổi mảng 1 chiều thành mảng 2 chiều có nhiều phần tử mẹ, mỗi phần tử mẹ có 1 phần tử con?
Câu trả lời là dùng vòng lặp For kết hợp với hàm push() của Java script
Chú thích
arr2 là mảng đã chuyển đổi của mảng arr
push() là hàm cho phép “đẩy” những phần tử trong ngoặc vào trong mảng đằng trước
Bằng cách thêm dấu ngoặc vuông như thế này [arr[i]], ta đã biến mỗi phần tử của arr thành 1 mảng riêng. Tóm lại, “đẩy” mảng 1 chiều vào trong mảng 1 chiều khác, thì ta sẽ được mảng 2 chiều
Kết quả file log gồm mảng arr2 và dải ô A4:A6
Như vậy, mảng arr2 mới đã có định dạng giống với dải ô A4:A6 – mảng 2 chiều với 3 phần tử mẹ, mỗi mẹ có 1 con. Bây giờ thì ta có thể ghi arr2 vào dải ô
3. Dải ô có nhiều hàng – nhiều cột
Dải ô A9:C11
Ví dụ cuối cùng là dải ô A9:C11, gồm 3 hàng và 3 cột. Hãy cùng xem định dạng của dải ô này trong file log trước:
Ta thấy, dải ô A9:C11 là mảng 2 chiều có 3 phần tử mẹ (được bao bọc bởi [ ]). Mỗi phần tử mẹ có 3 phần tử con bên trong
Vì dải ô có đến 9 giá trị, nên nếu muốn ghi 1 mảng vào dải ô thì mảng đó phải có kích thước và định dạng tương tự
Last updated