Я использую PSPad в качестве текстового редактора, который позволяет нажимать Alt+, Dчтобы вставить метку времени, например:
2010-07-17 23:45:44
Есть ли способ сделать это в таблице Google?
Я использую PSPad в качестве текстового редактора, который позволяет нажимать Alt+, Dчтобы вставить метку времени, например:
2010-07-17 23:45:44
Есть ли способ сделать это в таблице Google?
Ответы:
Я использую AutoHotKey для выполнения этой функции.
AutoHotKey - это скриптовое приложение и язык Windows.
Код, который я использую ниже, будет легко изменить время вставки и изменить косую черту на дефис, если вы предпочитаете это.
+!d:: ;Shift-Alt-D: Insert current date
SendInput %A_DD%/%A_MM%/%A_YYYY%
return
Google Sheets поддерживает следующие сочетания клавиш:
Ctrl+ Shift+ :- это нажатие клавиши для вставки времени.
Ctrl+ ;нажатие клавиши для вставки даты.
Ctrl+ Alt+ Shift+ :- это нажатие клавиши для вставки даты и времени.
См. Клавиатурные ускорители, мнемонику и сочетания клавиш для получения более подробной информации.
Я создал небольшой скрипт, который преобразует строковый литерал "_now" в текущую дату -
function onEdit(e) {
if (e.range.getValue() == "_now") {
e.range.setValue(new Date());
}
}
Я нахожу это довольно удобным для ввода _now
и преобразования его в текущее значение даты и времени.
См. Https://developers.google.com/apps-script/quickstart/macros и https://developers.google.com/apps-script/understanding_events для получения дополнительной информации о том, как добавить это в свою таблицу Google.
Вы можете поместить в букмарклет это место:
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);
затем отредактируйте ячейку и щелкните букмарклет.
=today()
в ячейку текущую дату.Формула для текущей даты-времени =now()
. Это можно использовать для создания статической временной метки следующим образом:
=NOW()
в клеткуGoogle Sheets не поддерживает его, но вы можете попробовать другой обходной путь без внешних приложений:
(Если вы используете MacOS, используйте Cmdвместо Ctrlfor 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 Sheets - куча пылающего мусора (нет способа установить пользовательский формат по умолчанию, нет способа изменить порядок элементов даты / времени, не удаляя все сначала и добавляя каждую часть за раз).
Вы можете обратиться к этому руководству , оно также содержит видео. В коде сценария измените
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