ฉันใช้ PSPad เป็นโปรแกรมแก้ไขข้อความซึ่งให้คุณกดAlt+ Dเพื่อแทรกการประทับเวลาเช่น:
2010-07-17 23:45:44
มีวิธีทำเช่นนี้ใน Google Spreadsheet หรือไม่?
ฉันใช้ PSPad เป็นโปรแกรมแก้ไขข้อความซึ่งให้คุณกดAlt+ Dเพื่อแทรกการประทับเวลาเช่น:
2010-07-17 23:45:44
มีวิธีทำเช่นนี้ใน Google Spreadsheet หรือไม่?
คำตอบ:
ฉันใช้ AutoHotKey เพื่อทำหน้าที่นี้
AutoHotKeyเป็นแอปพลิเคชันการเขียนสคริปต์และภาษา Windows
รหัสที่ฉันใช้อยู่ด้านล่างจะสามารถแก้ไขได้อย่างง่ายดายเพื่อแทรกเวลาและเปลี่ยนเครื่องหมายทับเป็นขีดกลางถ้านั่นคือสิ่งที่คุณต้องการ
+!d:: ;Shift-Alt-D: Insert current date
SendInput %A_DD%/%A_MM%/%A_YYYY%
return
Google ชีตสนับสนุนแป้นพิมพ์ลัดต่อไปนี้:
Ctrl+ Shift+ :คือการกดแป้นพิมพ์เพื่อแทรกเวลา
Ctrl+ ;คือการกดแป้นพิมพ์เพื่อแทรกวันที่
Ctrl+ Alt+ Shift+ :คือการกดแป้นพิมพ์เพื่อแทรกวันที่และเวลา
ดูเร่งคีย์บอร์ดจำและทางลัดสำหรับรายละเอียดเพิ่มเติม
ฉันสร้างสคริปต์เล็กน้อยที่แปลงสตริงตัวอักษร "_now" เป็น datetime ปัจจุบัน -
function onEdit(e) {
if (e.range.getValue() == "_now") {
e.range.setValue(new Date());
}
}
ฉันคิดว่ามันมีประโยชน์ในการพิมพ์_now
และแปลงเป็นค่า datetime ปัจจุบัน
ดูhttps://developers.google.com/apps-script/quickstart/macrosและhttps://developers.google.com/apps-script/understanding_eventsสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเพิ่มสิ่งนี้ลงใน Google Spreadsheet ของคุณ
คุณสามารถใส่ bookmarklet ด้วยตำแหน่งนี้:
javascript:var thetime=new Date();var txtNode=document.createTextNode((thetime.getMonth()+1)+'/'+thetime.getDate()+'/'+thetime.getFullYear()+' '+thetime.getHours()+':'+thetime.getMinutes()+':'+thetime.getSeconds()); var myInputNode=document.getElementsByClassName('cell-input')[1]; if (myInputNode.hasChildNodes()) { myInputNode.replaceChild(txtNode, myInputNode.childNodes[0]); } else { myInputNode.appendChild(txtNode); }; void(0);
จากนั้นแก้ไขเซลล์และคลิกที่ bookmarklet
=today()
ลงในเซลล์เพื่อรับวันที่ปัจจุบันสูตรสำหรับปัจจุบัน=now()
วันที่เวลาเป็น สิ่งนี้สามารถใช้เพื่อสร้างการประทับเวลาแบบคงที่ดังต่อไปนี้:
=NOW()
ในเซลล์Google ชีตไม่รองรับ แต่คุณสามารถลองวิธีแก้ปัญหาอื่นโดยไม่ใช้แอปภายนอก:
(ถ้าคุณอยู่ใน MacOS ใช้CmdแทนCtrlสำหรับCopy/Cut/Paste
แต่Ctrl+ Mสำหรับการแทรกความคิดเห็นเพราะCmd+ Mถูกกลบเกลื่อนหน้าต่าง.)
ฉันยังสร้างสคริปต์สำหรับสิ่งนี้และฉันต้องการรูปแบบที่ไม่สามารถใช้ได้ในการประทับเวลาเริ่มต้น (เช่นใน=TODAY()
หรือ=NOW()
)
นอกจากนี้ยังคว้าเขตเวลาตามเซสชันปัจจุบัน (ซึ่งตั้งอยู่ในการตั้งค่าของชีต)
function _NOW(input)
{
// for formatting, see:
// https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
var timestamp_format = "yyyy-MM-dd hh:MM a"; // Timestamp Format eg: 2019-04-11 12:04 PM
var timezone = Session.getScriptTimeZone();
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
return date;
}
ใช้งานง่าย:
=_NOW()
ในการชี้แจง: ฉันทำการจัดรูปแบบวันที่ด้วยตนเองเนื่องจากการจัดรูปแบบวันที่ที่กำหนดเองใน Google ชีทเป็นกองขยะทิ้ง (ไม่มีวิธีตั้งรูปแบบที่กำหนดเองเป็นค่าเริ่มต้นไม่มีวิธีเปลี่ยนลำดับขององค์ประกอบวันที่ / เวลาโดยไม่ต้องลบทุกอย่าง ก่อนและเพิ่มทีละส่วน)
คุณสามารถอ้างอิงบทช่วยสอนนี้มีวิดีโอด้วย ในรหัสสคริปต์ให้เปลี่ยน
var timestamp_format = "MM-dd-yyyy"; // Timestamp Format.
ตามค่าเริ่มต้นมันให้วันที่ของคุณเท่านั้นเปลี่ยนเป็นรหัสด้านล่างเพื่อรับเวลา
var timestamp_format = "MM-dd-yyyy hh:mm:ss"; // Timestamp Format.
นี่คือสิ่งที่คุณกำลังมองหา? ฉันลองแล้วมันใช้งานได้อย่างสมบูรณ์
Tanguay =IF(A2<>"",NOW(),"")
ผมได้ทดสอบเพียงแค่นี้ ถ้า A2 มีค่ามันจะเข้าสู่การประทับเวลา หาก A2 ว่างเปล่าการประทับเวลาจะไม่ถูกป้อนในคอลัมน์การประทับเวลา
=if(len(A2)>0;if(B2<>"";B2;now());"")
ในการตั้งค่าให้เปลี่ยนโซลูชันวงจรเป็น 1 และจะทำงานโดยไม่ใช้ JavaScript