[Help] – Giải quyết thắc mắc qua comment

Bài viết này dùng để giải quyết thắc mắc của các bạn về App Script Sheet thông qua phần comment ở bên dưới

Ngoài ra các bạn có thể gửi câu hỏi về cho HocGgSheet.com qua biểu mẫu sau:

https://goo.gl/forms/lJ1fUWaVhpwOcMuM2

19 COMMENTS

  1. Chào Kỳ quảng hà, comment này để trả lời câu hỏi của bạn trong bài 3
    https://hocggsheet.com/copy-di-chuyen-dai-o-sang-sheet-khac/
    Bắt đầu từ comment này chúng ta sẽ giải quyết các câu hỏi nhé

    Về câu hỏi của bạn, mình trả lời thẳng luôn là mình cũng không làm được. Vì lí do như sau:

    Thứ nhất, vấn đề không nằm ở code trong App Script, mà ở những spreadsheet url parameter (trong link) mà bạn đã dùng. Cụ thể thì mình thấy là ở parameter &rm=demo (dùng để kích hoạt render mode – chế độ xuất bản)

    Thứ 2, những parameter bạn dùng không phải chuyên dùng để ẩn menu đâu. Google làm ra nó nhằm chức năng là publish (xuất bản) hoặc embed (nhúng) vào các website. Mà khi nhúng vào website thì rõ ràng là 1 số chức năng edit trong spreadsheet sẽ bị giới hạn. Và trong trường hợp của bạn, chức năng bị giới hạn là cái hiện thông báo (popup). Mình có thấy là bạn dùng hàm msgBox, không chỉ hàm này, mà ngay cả promt hoặc alert đều không hoạt động khi chúng ta embed spreadsheet vào website

    Trên đây là mấy điều mà mình suy đoán thôi, vì không thấy có lời giải thích nào trên mạng. Mình đã cố tìm hiểu trong trang app script của google và cả trong stackoverflow.com nhưng cũng không thấy ai nói về vấn đề này. Dù sao thì hi vọng lời giải thích này sẽ giúp ích cho bạn.

  2. Chào bạn ,mình đang tìm cách “xác thực phản hồi” trên GForm ,dựa trên dữ liệu của một cột hay ô trên GSheet.
    mình đã tìm được đoạn mã lệnh làm được việc này ,nhưng là liên kết giữa “trường menu thả xuống” với một cột trên GSheet.
    Giờ mình muốn nó “xác thực phản hồi” theo điều kiện: Trả lời ngắn – xác thực phản hồi – số – giữa ,Trong đó số đầu tiên được liên kết đến ô A1 và số thứ hai liên kết đến ô B2 của GSheet…..nhưng ko biết phải sửa như thế nào ,bạn giúp mình nhé…

    • Chào bạn, thực ra thì mình không hiểu lắm về cầu hỏi của bạn. Bạn có thể gửi file đó cho mình được không? Nếu bạn ngại thì có thể gửi file đó qua email riêng cho mình ([email protected]). Tuy kiến thức về google form của mình có hạn nhưng bạn cứ gửi để mình xem có giúp được gì không nhé.
      Thân

  3. Chào bạn
    Cho mình hỏi có cách nào để setup như sau: Sau khi share 1 file cho người khác thì những nội dung thay đổi do người mới được share đổi mình sẽ không nhìn thấy nữa không.

    • Chắc bạn sẽ phải xoá chính bạn khỏi phần share file thôi ^^
      Nghĩa là bạn đưa file cho người ta đó ạ, ngoài ra thì mình ko nghĩ là có cách nào đặc biệt vậy đâu ạ

  4. Cho mình hỏi. mình có 1 script nhập liêu share cho nhiều người. nhưng khi 2 người cùng bấm vao app script thì phần dữ liệu đó bị mất. có cách nào khác phục đc không.

  5. Chào bạn,
    Mình có thắc mắc liên quan đến bài https://hocggsheet.com/help-form-nhap-lieu-don-gian/ như sau:
    Trong hàm sua ()
    var nguon = ss.getSheetByName(“Nguon”);
    var dich = ss.getSheetByName(“Dich”);

    var socansua = nguon.getRange(“E1”).getValue();
    var contentdich = dich.getRange(socansua +1, 2, 1, 19).getValues();

    Do dữ liệu trong E1 nhập vào là số, nên trong dich.getRange mới dùng được socansua + 1, trường hợp mình muốn dữ liệu nhập vào là 1 dữ liệu bất kỳ, trong sheet Dich se tìm đến dòng chứa dữ liệu đó thì mình dùng cách nào.

    Xin cảm ơn bạn.

    • Giả sử thông tin nhập vào được tìm trong cột A nhé. Bạn dùng thêm 1 biến để tìm dòng đó ở đâu và kết hợp vòng lặp for:

      var nguon = ss.getSheetByName(“Nguon”);
      var dich = ss.getSheetByName(“Dich”);

      var socansua = nguon.getRange(“E1”).getValue();
      var colA = nguon.getRange(“A:A”).getValues();
      for (var i = 0; i

  6. Chào anh.

    Ở bài 8 (Pop up), em có sử dụng hàm prompt() với mục đích collect thông tin.
    Sau đó muốn lấy dữ liệu user nhập vào và trích xuất thẳng vào một sheet thì có được không ạ?
    Nếu có, cần kết hợp với hàm nào ạ?

    Em cảm ơn ạ.

    • Chào bạn,
      Bạn sử dụng getResponseText() như trong bài viết mình đã hướng dẫn là được rồi nhé. Ví dụ:

      var text = ui.prompt(‘Sức khỏe hôm nay của bạn thế nào?’,ui.ButtonSet.YES_NO).getResponseText();

      Biến text sẽ vừa hiện popup điền thông tin, đồng thời sẽ chứa luôn thông tin nhập vào.
      Còn bạn muốn xuất thẳng vào 1 sheet thì cứ dùng getRange, setValue như bình thường thôi. Ví dụ như bạn muốn ghi vào ô A1 của sheet tên “Data” thì làm như sau:
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Data”).getRange(“A1”).setValue(text);

      Cảm ơn bạn đã xem web của mình ^^
      Thân.

  7. Bạn ơi, nếu thông tin được tìm trong cột A thì biền colA = dich.getRange(“A:A”).getValues(); phải không ạ?
    Bạn cho mình xin thêm chi tiết của for (giả sử 10 dòng) và cách để truy được index của cột cần lấy.
    Xin cảm ơn.

    • “Bạn ơi, nếu thông tin được tìm trong cột A thì biền colA = dich.getRange(“A:A”).getValues(); phải không ạ?” – Đúng rồi bạn nhé. Còn câu hỏi 2 thì mình không hiểu ý lắm. Nếu bạn muốn lấy 10 dòng cột A thì không nên dùng for để lấy từng dòng, mà hãy dùng 1 lệnh ví dụ như: colA = dich.getRange(“A1:A10”).getValues()
      Thay vì for (i = 1 -> 10) và getValue, getRange từng dòng, như vậy thì code sẽ bị chậm.
      Nếu dùng như mình nói thì sau đó, nếu bạn muốn for để làm việc với từng dòng thì có thể làm như sau:
      for (var i = 0; i < colA.length; i++) { // làm gì đó với biến colA[i][0] // biến colA[i][0] là giá trị từng dòng // i là dòng, bắt đầu từ 0 vì mảng bắt đầu đếm từ 0 // [0] vì đang chỉ lấy giá trị trong 1 cột } Ví dụ mình muốn tìm trong 10 hàng cột A có ô nào = 10 hay không, thì làm như sau: for (var i = 0; i < colA.length; i++) { if (colA[i][0] == 10) { Logger.log(colA[i][0]); } }Cảm ơn bạn đã ghé thăm web ^^ Thân.

    • Chào Hưng,

      Do không thể để hình ảnh trong phần comment được nên mình đã gửi email rồi. Bạn kiểm tra nhé.

      Cảm ơn bạn đã ghé thăm web của mình. Thân.

Leave a Reply