Google Sheet Script ทำงานไม่เต็มที่
ฉันใช้ Google ฟอร์มเพื่อเรียกใช้สคริปต์นี้
เมื่อฉันเรียกใช้สคริปต์ด้วยปุ่ม Play มันทำงานได้อย่างสมบูรณ์แบบ
เมื่อฉันปล่อยให้ทริกเกอร์ onsubmit ทำงานกล่องกาเครื่องหมายจะเติมค่าปกติ แต่วันที่ setValue ไม่แสดง
ฉันได้ลองใช้ด้วยsetFormulaแต่ก็ได้ผลลัพธ์เหมือนกัน
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()) + ")");
}
เป้าหมายสุดท้ายคือการเติมคอลัมน์ J พร้อมวันที่จัดรูปแบบช็อตจากคอลัมน์ A ทุกครั้งที่ส่งแบบฟอร์ม
ฉันต้องการรูปแบบนี้เพื่อเรียกใช้ countIfs บนแผ่นงานอื่น
อีกทางเลือกหนึ่งคือการฝังแท็กรูปแบบลงในคำสั่ง CountIfs นี้เพื่อให้ตรงกัน
=COUNTIFS('Form Responses 1'!J:J,A2,'Form Responses 1'!D:D,B2)
คำตอบ
คำตอบที่อัปเดต
หากคุณมีปัญหาในการเรียกใช้ฟังก์ชันบนทริกเกอร์ในขณะที่ทำงานตามที่ตั้งใจไว้โดยไม่มีทริกเกอร์ให้ตรวจสอบสิ่งต่อไปนี้:
สำหรับไฟล์ / ข้อมูลแบบฟอร์มที่มีขนาดใหญ่อาจทำให้เกิดความล่าช้าในการเติมข้อมูลแบบฟอร์มใหม่ในแผ่นงาน
เพื่อหลีกเลี่ยงความขัดแย้งให้เวลาสเปรดชีตเพื่อเติมข้อมูลในแถวใหม่ก่อนที่จะดึง
sheet.getLastRow()หรือเข้าถึงข้อมูลในแผ่นงานคุณสามารถจุดอย่างง่ายดายเช่นกับUtilities.sleep ()
ตรวจสอบว่าทริกเกอร์ของคุณได้รับการติดตั้งอย่างถูกต้อง สำหรับการตรวจสอบนี้ว่า
- ประเภทของทริกเกอร์ถูกต้อง
- ทริกเกอร์ถูกผูกไว้กับฟังก์ชันที่ถูกต้อง
- หลีกเลี่ยงความขัดแย้งโดยการสร้างทริกเกอร์ใหม่เมื่อเปลี่ยนชื่อ funciton
ตรวจสอบว่าปัญหาไม่ได้เกิดจากข้อ จำกัด ของทริกเกอร์
นี่เป็นแหล่งที่มาของข้อผิดพลาดทั่วไปเมื่อใช้ทริกเกอร์ธรรมดา
ตรวจสอบว่าบัญชีที่ได้รับอนุญาตทริกเกอร์กำลังทำงานอยู่มีสิทธิ์แก้ไขแผ่นงาน / ช่วง นี่เป็นสิ่งสำคัญในการตรวจสอบเมื่อเจ้าของทริกเกอร์เป็นบุคคลที่แตกต่างกันซึ่งบุคคลที่เรียกใช้สคริปต์ด้วยตนเอง
โปรดทราบว่า
setFormula()ไม่จำเป็นต้องรวม=ไว้ในสูตรโปรดทราบว่า
DATEVALUE()จะส่งคืนผลลัพธ์ที่คาดไว้ก็ต่อเมื่อเซลล์ได้รับการจัดรูปแบบเป็นวันที่อย่างถูกต้อง