Tôi biết bạn đang hạnh phúc với giải pháp của bạn như nó đứng, nhưng tôi chỉ muốn thêm các quan sát của tôi về cách Google Apps Script giao dịch với "ngày", hoặc thông qua vào một chức năng tùy chỉnh, hoặc lấy ra từ một ô có getValue().
Quy tắc chung của tôi là nếu Trang tính (ứng dụng bảng tính) đang cung cấp giá trị được định dạng làm ngày (hoặc do tự động cưỡng chế hoặc người dùng đặt định dạng), thì Google Apps Script sẽ tự động giữ giá trị này như một đối tượng ngày tháng.
Ví dụ:
function returnDate(value) {
return new Date(value);
}
Nếu bạn nhập 1/1/13
trong A1, và trong tế bào khác bạn gọi =returnDate(A1)
, nó sẽ trở lại cùng ngày (như nó sẽ nếu bạn chỉ đơn giản là có return value;
trong code). Tuy nhiên, hãy xem điều gì sẽ xảy ra khi bạn định dạng A1 là "Bình thường" (chuyển đổi nó thành giá trị bằng số). Ở đây, "Số sê-ri Trang tính" (số ngày từ ngày 30/12/1899) được Google Apps Script chuyển đổi thành đối tượng ngày, nhưng ở GAS, "số lượt xem" là số mili giây từ nửa đêm 1/1/1970 . Vì vậy, bạn có thể nhận được kết quả không mong muốn nếu bạn đang chuyển các giá trị số mà bạn tin là đại diện cho một ngày.
Ngoài ra so sánh:
=returnDate(DATE(2013;1;1))
=returnDate(VALUE("1/1/13"))
=returnDate(DATEVALUE("1/1/13"))
=returnDate("1/1/13")
=returnDate("1/1/2013")
Sau hai "công việc", bởi vì new Date()
tạo thành công đối tượng ngày từ một chuỗi hợp lệ, nhưng lưu ý rằng Trang tính tự động liên kết với thế kỷ hiện tại, trong khi GAS kết hợp một năm hai chữ số với năm 1900. Vì vậy, IMO nếu bạn muốn nó hoạt động chính xác như trong Excel (nghĩa là, "coi" một giá trị số như một số sê-ri cho một ngày), trước tiên bạn sẽ cần kiểm tra nếu tham số đã truyền là một ngày tháng hay chưa. đối tượng (hoặc chuỗi văn bản "hợp lệ"), và nếu không, chuyển đổi toán học từ "days from 30/12/1899" thành "mili giây từ 1/1/1970", và sau đó là new Date()
nó.
Xin lỗi cho bài đăng có thời lượng dài.
Hãy xem công thức trong bảng tính này: https://docs.google.com/spreadsheet/ccc?key=0AqhqY231XZd3cFBiY2VqeWdmNWdaZ1BqVVZ2Q1pxWVE&hl=vi#gid=0 – jfriend00
Không, tôi sợ - bạn không thể sử dụng các hàm bảng tính trong ứng dụng-script, vì vậy bạn phải viết nó từ đầu. – EML
Bài đăng cuối cùng trong [chủ đề này] (http://productforums.google.com/forum/#!category-topic/apps-script/services/47tY3PTkExo) gợi ý rằng bạn có thể lấy ngày bảng tính, sử dụng một số tiện ích javascript của bảng tính để chuyển đổi nó thành định dạng văn bản mà hàm tạo ngày javascript có thể xử lý và sau đó cấp chuỗi đó cho hàm tạo ngày javascript. Nếu bạn nghiêm túc về việc Googling vấn đề này, tôi nghi ngờ bạn sẽ tìm thấy câu trả lời. – jfriend00