Không thể lấy ID bảng trong Google Apps Script

Aug 26 2020

Tôi đã cố gắng lấy id trang tính đang hoạt động từ [câu trả lời này] [1] bằng cách sử dụng:

function getActiveSheetId(){
  var id  = SpreadsheetApp.getActiveSheet().getSheetId();
  Logger.log(id.toString());
  return id;
}

nhưng nhật ký ghi nhật ký của tôi bằng 0. Có cách nào khác để làm được điều tương tự không? Tôi muốn đọc trang tính này từ tệp trang tính khác và sau đó thực hiện các thao tác.

[1]: https://stackoverflow.com/questions/26682269/get-google-sheet-by-id#:~:text=filter(%20 Chức năng(s)%20%7B,Logs%20or%20use%20the % 20debugger.

Trả lời

2 Marios Aug 26 2020 at 16:57

Không có gì sai với mã.

Nó trả về 0 nếu bạn áp dụng chức năng này cho trang tính đầu tiên, đây là id trang tính chính xác như bạn có thể thấy từ url của trang:

và nếu bạn áp dụng cùng một chức năng cho một trang tính khác, bạn sẽ nhận lại đúng id trang tính:


Nếu bạn muốn lấy một trang tính theo id của nó, hãy tham khảo bài đăng này:

Nhận Google Trang tính bằng ID?

  • Thí dụ:

     function getSheetById(id) {
     return SpreadsheetApp.getActive().getSheets().filter(
      function(s) {return s.getSheetId() === id;}
    )[0];
    }
    

Ví dụ: nếu bạn muốn lấy trang tính đầu tiên (id = 0) thì hãy làm như vậy:

var sheet = getSheetById(0);

Và sau đó bạn có thể áp dụng tất cả các thao tác trên trang tính sheetnhư bình thường.