Метод # 1: Кнопка:
Если вы хотите вызвать это, используя одну кнопку и одну функцию, вам нужно найти способ для скрипта узнать, какую ячейку он должен редактировать. В противном случае вам потребуется функция для каждой отдельной ячейки с заданиями и одна кнопка для каждой из этих функций.
Чтобы отследить это, используйте getActiveRange () , который вернет текущую выбранную ячейку. Если вы хотите следовать этому методу, вы должны убедиться, что ячейка, которую вы хотите редактировать, выбрана при нажатии кнопки .
const addDate = () => {
const cell = SpreadsheetApp.getActiveRange(); // Get currently selected cell
const dateFormat = "yyyy-MM-dd"; // Your desired date format. Change according to your preferences
const date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), dateFormat);
cell.setValue(date.concat(' - ', cell.getValue())); // Append date to the selected cell
}
Метод # 2: Флажки и onEdit:
Другим вариантом будет использование флажков вместо кнопки. Идея заключалась бы в том, чтобы вставить флажок для каждой ячейки с задачами. Затем вы можете использовать триггер onEdit , чтобы отслеживать изменения в этих флажках, чтобы соответствующая ячейка задачи редактировалась, если флажок отмечен. Объект события будет использоваться для получения информации о том, какая ячейка редактируется.
Например, если столбец A был вашей задачей, а столбец B - флажками, вы можете сделать это:
const onEdit = e => {
const range = e.range;
const editedCol = range.getColumn(); // Edited column index
const checkCol = 2; // Checkbox column (B, change accordingly)
const taskCol = 1; // Tasks column (A, change accordingly)
if (editedCol === checkCol && e.value === "TRUE") { // Check that checkbox is edited and marked (column B and TRUE)
const editedRow = range.getRow(); // Edited row index
const dateFormat = "yyyy-MM-dd"; // Your desired date format. Change according to your preferences
const date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), dateFormat);
const sheet = range.getSheet();
const taskRange = sheet.getRange(editedRow, 1);
taskRange.setValue(date.concat(' - ', taskRange.getValue())); // Append date to corresponding cell
}
}
Ссылка: