Google Sheet Script không thực thi đầy đủ
Tôi đang sử dụng Biểu mẫu của Google để kích hoạt tập lệnh này.
Khi tôi chạy script với nút Play, nó hoạt động hoàn hảo.
Khi tôi để trình kích hoạt gửi kèm chạy nó, hộp kiểm sẽ điền tốt nhưng ngày setValue thì không.
Tôi cũng đã thử sử dụng setFormulanhưng tôi nhận được kết quả tương tự.
function AddCheckBox_toSchoolLunchForm(F) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1")
var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
var range = sheet.getRange(sheet.getLastRow(), 8);
range.clearContent();
range.setDataValidation(rule);
var FormulaCell = sheet.getRange(sheet.getLastRow(), 10);
FormulaCell.setFormula("=DATEVALUE(A" + (sheet.getLastRow()) + ")");
}
Mục tiêu cuối cùng là để cột J điền ngày tháng được định dạng từ cột A mỗi khi biểu mẫu được gửi.
Tôi cần định dạng này để chạy countIfs trên một trang tính khác.
Một tùy chọn khác là bằng cách nào đó nhúng thẻ định dạng vào lệnh CountIfs này để chúng khớp với nhau.
=COUNTIFS('Form Responses 1'!J:J,A2,'Form Responses 1'!D:D,B2)
Trả lời
CẬP NHẬT CÂU TRẢ LỜI
Nếu bạn gặp sự cố khi chạy một chức năng trên trình kích hoạt trong khi nó hoạt động như dự định mà không có trình kích hoạt, hãy kiểm tra những điều sau:
Đối với tệp nặng / dữ liệu biểu mẫu, chúng có thể gây chậm trễ trong việc điền trang tính với dữ liệu biểu mẫu mới.
Để tránh xung đột, hãy cho bảng tính một khoảng thời gian để điền hàng mới trước khi truy xuất
sheet.getLastRow()hoặc truy cập dữ liệu trong trang tính.Bạn có thể chấm dễ dàng, ví dụ như với Utilities.sleep () .
Kiểm tra xem trình kích hoạt của bạn đã được cài đặt đúng chưa. Đối với điều này kiểm tra rằng
- loại kích hoạt là chính xác
- trình kích hoạt được liên kết với chức năng chính xác
- tránh xung đột bằng cách tạo trình kích hoạt mới khi đổi tên funciton.
Kiểm tra xem sự cố không phải do các hạn chế về trình kích hoạt
Đây là một nguồn lỗi phổ biến khi sử dụng các trình kích hoạt đơn giản.
Kiểm tra xem tài khoản được ủy quyền mà trình kích hoạt đang chạy có quyền chỉnh sửa trang tính / phạm vi hay không. Điều này quan trọng để kiểm tra xem chủ sở hữu trình kích hoạt có phải là một người khác biệt với người điều hành tập lệnh thủ công hay không.
Lưu ý rằng
setFormula()không cần thiết phải kết hợp=vào công thứcLưu ý rằng điều đó
DATEVALUE()sẽ chỉ trả về kết quả mong đợi khi ô được định dạng đúng thành ngày