#javascript #google-apps-script #google-sheets
#javascript #google-приложения-скрипт #google-sheets
Вопрос:
Этот код обновляет только последнее редактирование ячейки (пользователь, дата и время) и вставляет в качестве примечания onEdit
function onEdit(e) {
var email = Session.getActiveUser().getEmail();
var curDate = Utilities.formatDate(new Date(), "GMT 05:30", "EEEE dd-MMM-yyyy ● hh:mm a")
if (e.range.columnStart === 5 amp;amp; e.source.getActiveSheet().getName() == 'ARTWORK') {// Column 12 is Column L
//Set a comment on the edited cell to indicate when it was changed.
e.range.setNote('Updated by - ' email 'nnDate amp; Timen' curDate);
};
}
Но мое требование в том, можем ли мы добавить историю редактирования в ячейку в качестве примечания?
например,
ОТРЕДАКТИРОВАНО NYK 11 сентября 2020 года в 11:20 утра
ОТРЕДАКТИРОВАНО XYZ 12 сентября 2020 года в 12:20 вечера
ОТРЕДАКТИРОВАНО ABC 15 сентября 2020 года в 15:01 вечера
Возможно ли это?
Ответ №1:
Объяснение:
-
Вы можете получить текущие примечания к ячейке и добавить новое примечание при редактировании этой конкретной ячейки.
-
Для выполнения этой задачи вы можете использовать getNote() для получения текущих заметок выбранной ячейки, а затем использовать setNote() для обновления заметок, добавив дополнительную заметку к существующим:
var current_notes = e.range.getNote(); e.range.setNote(`${current_notes}nn Updated by - ${email} nDate amp; Timen ${curDate}`);
-
Поскольку последнее строковое выражение включает в себя множество переменных, оно
предпочтительнее вместо этого использовать шаблонные литералы.
Решение:
function onEdit(e) {
var email = Session.getActiveUser().getEmail();
var curDate = Utilities.formatDate(new Date(), "GMT 05:30", "EEEE dd-MMM-yyyy ● hh:mm a")
if (e.range.columnStart === 5 amp;amp; e.source.getActiveSheet().getName() == 'ARTWORK' amp;amp; e.range.getValue() !="") {// Column 12 is Column L
var current_notes = e.range.getNote();
e.range.setNote(`${current_notes}nn Updated by - ${email} nDate amp; Timen ${curDate}`);
SpreadsheetApp.flush();
};
}
Иллюстрация:
Соответствующая информация:
Редактировать историю ячейки — это новая функция, недавно представленная Google. На данный момент нет способа использовать Google Apps Script для получения истории редактирования ячейки. Об этой функции уже сообщалось для реализации в IssueTracker. Вы можете нажать на кнопку «Звезда» в левом верхнем углу экрана, чтобы увеличить шансы на то, что эта функция будет реализована Google в будущем.
Комментарии:
1. Это почти сделано, но при первом редактировании он устанавливает 2 заметки (в первой заметке пользователь не упоминается), а при втором редактировании добавляет еще 2 заметки и продолжает повторяться, это может запутать зрителей и затруднить понимание происходящего. Есть ли какой-нибудь способ это исправить?
2. @MuhammedAadhil хм, я не уверен, понимаю ли я. Вам нужна история изменений в s cell. Это означает, что вы сохраняете старую заметку и добавляете поверх нее. Таким образом, каждый раз, когда редактируется ячейка, обновление редактирования будет сохранено в виде заметки поверх текущих заметок в ячейке. Не могли бы вы уточнить, пожалуйста, подробнее?
3. @MuhammedAadhil или вы имеете в виду, что хотите очистить заметку только при первом запуске скрипта? А именно, очистите заметки, которые у вас есть в вашем листе прямо сейчас. Это то, что вы хотите?
4. Я должен получить 1 заметку за 1 правку и 2 заметки за 2 правки и 3 заметки за 3 правки, но я получаю 2 заметки за 1 правку, а иногда и с дублирующейся меткой времени.
5. Я думаю, вы получаете это, потому что примечания к ячейке будут обновляться каждый раз, когда вы редактируете ячейку. Это включает в себя удаление содержимого ячейки или замену его непосредственно другим значением. Вы хотите, чтобы примечания обновлялись только тогда, когда ячейка обновляется другим (непустым) значением? Дайте мне знать, и я изменю код. @MuhammedAadhil