Vòng lặp trong Apps Script Google

Tất cả các loại vòng lặp trong Apps Script Google

1. Vòng lặp lập trình là gì ?

Là 1 đoạn code được thực thi lại nhiều lần, được cấu hình bởi vòng lặp.

Ví dụ: gởi mail cho tất cả các khách hàng trong danh sách email của tôi, thì nghiệp vụ này bạn sẽ sử dụng vòng lặp nhé.

Email Công việc
a@x Gởi mail
b@x Gởi mail
c@x Gởi mail

Như vậy việc gởi mail thực hiện lặp đi lặp lại, như vậy gọi là vòng lặp.

2. Code vòng lặp trong Apps Script

Trong Google Apps Script, vòng lặp (loop) là một cấu trúc điều khiển quan trọng để lặp qua các phần tử trong mảng hoặc các ô trong bảng tính.

 Ví dụ vòng lặp đơn giản nhất  Google Apps Script

// In ra 100 câu xin chào
for(var i=1;i<=100;i++)
  {
   Logger.log("XIN CHAO" ) ;
  }
  Logger.log("Chào vậy mà chưa đăng ký khóa học o_o") ;

// gởi mail chúc tết cho 100 khách hàng

 for(var i=1;i<=100;i++)
  {
       GmailApp.sendEmail(DIA_CHI_MAIL, "Năm mới AN KHANG THỊNH VƯỢNG"
       , "Cảm ơn quý khách đã tin tưởng ủng hộ chúng tôi trong 1 năm qua !");
  }

3. Các loại vòng lặp trong Google Apps Script

Google Apps Script hỗ trợ các loại vòng lặp phổ biến như for, forEach, while, và do-while.

Dưới đây là các ví dụ và cách sử dụng các loại vòng lặp này.

Khi lập trình với Apps Script google chúng ta cần phải biết sử dụng tất cả các loại vòng lặp để thuận tiện trong việc lập trình ứng dụng app script.

Vòng lặp for

Vòng lặp for là kiểu vòng lặp cơ bản và thường được sử dụng nhất. Cú pháp của vòng lặp for trong JavaScript (và Apps Script) như sau

Thực hành vòng lặp for

for(var j=0;j<10;j++)
  {
     // lệnh Logger chạy được 10 lần
      Logger.log(j);
  }
Điều quan trọng là bạn cần hiểu bản chất lệnh vòng lặp chạy như thế nào ?
Tại sao lại có kết quả từ 0 đến 9 mà không phải là 0 đến 10 ?

Đặt câu hỏi code

Chi tiết về vòng lặp for

Cú pháp vòng lặp FOR apps script

for (initialization; condition; increment) {
  // Mã sẽ được thực thi trong mỗi lần lặp
}

Giải thích các thành phần trong for:

    initialization: Đây là bước khởi tạo, thường được dùng để khai báo và gán giá trị ban đầu cho biến đếm. Thường chỉ được thực hiện một lần trong vòng lặp.

    condition: Điều kiện kiểm tra, được kiểm tra trước mỗi lần lặp. Nếu điều kiện là true, vòng lặp sẽ tiếp tục; nếu false, vòng lặp kết thúc.

    increment: Thay đổi giá trị của biến đếm sau mỗi lần lặp. Điều này có thể là tăng hoặc giảm giá trị của biến đếm, hoặc bất kỳ phép toán nào tùy thuộc vào nhu cầu.

    initialization: var i = Giá_Trị_Khởi_Tạo;
    condition: i < Giá_Trị_Kết_Thúc; nếu condition đúng thì lệnh trong vòng lặp chạy.
    increment: i++ — Tăng giá trị của i lên 1 sau mỗi vòng lặp / có thể thay đổi lại i-- (giảm đi 1)

Ví dụ 1: Lặp từ 1 đến 10 và in ra các số

function loopForExample() {
  for (var i = 1; i <= 10; i++) {
    Logger.log(i);  // In ra giá trị của i
  }
}


Ví dụ 2: Lặp đảo ngược (từ 10 đến 1)

function loopForExample() {
  for (var i = 10; i >= 1; i--) {
    Logger.log(i);  // In ra giá trị của i
  }
}
Giải thích code:
    initialization: var i = 10; — Bắt đầu từ 10.
    condition: i >= 1; — Lặp khi i lớn hơn hoặc bằng 1.
    increment: i-- — Giảm i xuống 1 sau mỗi lần lặp.


Ví dụ 3: Lặp qua mảng và in ra từng phần tử

function loopForExample() {
  var data = [10, 20, 30, 40, 50];

  // Lặp từ i = 0 đến i < data.length
  for (var i = 0; i < data.length; i++) {
    Logger.log(data[i]);  // In ra phần tử tại chỉ số i
  }
}
 

 Ví dụ 4: Ví dụ Lặp qua các dòng dữ liệu trong Google Sheets

function loopForExample() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();  // Lấy tất cả dữ liệu trong bảng tính
 
  for (var i = 0; i < data.length; i++) {  // Lặp qua từng dòng dữ liệu
    var row = data[i];  // Lấy dòng dữ liệu thứ i
    Logger.log(row);  // In ra dòng dữ liệu
  }
}

2. Vòng lặp for...in

Vòng lặp for...in thường được dùng để lặp qua các thuộc tính trong một đối tượng.

Cú pháp vòng lặp for...in

for (var key in object) {
  // Mã sẽ được thực thi cho mỗi thuộc tính trong đối tượng
}


Ví dụ 1: Lặp qua các thuộc tính của một đối tượng của mảng

 var data = [1, 2, 3, 4, 5];
  for (var key in data) {
    Logger.log(key + ": " + data[key]);  // In ra mỗi thuộc tính và giá trị của nó
  }


Ví dụ 2: Lặp qua các thuộc tính của một đối tượng json

function loopForInExample() {
  var obj = {
    name: "Alice",
    age: 25,
    city: "New York"
  };

  for (var key in obj) {
    Logger.log(key + ": " + obj[key]);  // In ra mỗi thuộc tính và giá trị của nó
  }
}

3. Vòng lặp forEach

Vòng lặp forEach là phương thức của mảng trong JavaScript, được dùng để lặp qua các phần tử trong mảng.

Ví dụ Lặp qua các phần tử trong mảng bằng forEach

function loopForEachExample() {
  var data = [1, 2, 3, 4, 5];
 
  data.forEach(function(element) {
    Logger.log(element);  // In ra từng phần tử của mảng
  });
}

Ví dụ vòng lặp foreach cho mảng

var ten= ["Hạnh", "Yên", "Bình", "Mu"];
 ten.forEach(function(value) {
   Logger.log(value);
 });

 

4. Vòng lặp while

Cú pháp vòng lặp while:

while (condition) {
  // Mã sẽ được thực thi miễn là điều kiện đúng
}

Ví dụ: Lặp qua các giá trị trong một mảng với while

function loopWhileExample() {
  var data = [10, 20, 30, 40, 50];
  var i = 0;
 
  while (i < data.length) {  // Lặp đến khi i >= length của mảng
    Logger.log(data[i]);  // In ra phần tử tại chỉ số i
    i++;  // Tăng giá trị i sau mỗi vòng lặp
  }
}

Vòng lặp do...while

Vòng lặp do...while sẽ thực thi ít nhất một lần và sau đó kiểm tra điều kiện. Nếu điều kiện đúng, vòng lặp tiếp tục.

do {
  // Mã sẽ được thực thi ít nhất một lần và tiếp tục lặp nếu điều kiện đúng
} while (condition);

Ví dụ Lặp qua các phần tử trong mảng với do...while

function loopDoWhileExample() {
  var data = [100, 200, 300, 400, 500];
  var i = 0;
 
  do {
    Logger.log(data[i]);  // In ra phần tử tại chỉ số i
    i++;  // Tăng giá trị i sau mỗi vòng lặp
  } while (i < data.length);  // Kiểm tra điều kiện để tiếp tục lặp
}

Ví dụ vòng lặp cho dữ liệu của sheet

  const sheet_AC = SpreadsheetApp.getActive().getActiveSheet();
  var data= sheet_AC.getDataRange().getValues() ;
  var ketquatim_DONG=-1;
  for (var i = 0; i < data.length; i++) {  
       Logger.log(  data[i][1] )
  
  }

Bài viết liên quan:

Tất cả các loại vòng lặp trong Apps Script Google