#google-apps-script #google-sheets #google-sheets-formula
#google-apps-script #google-sheets #google-таблицы-формула
Вопрос:
Очень зеленый и ищет некоторую помощь с потенциальным сценарием для внутреннего документа отслеживания клиентов. В идеале, когда вы устанавливаете флажок в столбце D (значение = TRUE), столбец G увеличится на 1, а столбец H уменьшится на -1. Я хочу, чтобы флажок сбрасывался в полночь, но сохраняйте значения в G и H.
Может кто-нибудь помочь этой зеленой девчонке?
https://docs.google.com/spreadsheets/d/187N0kY8wh-7I-SSGTqwjqdFLy6wCB-ujIj301KXtZhE/edit?usp=sharing
Ответ №1:
По сути, вы задаете два вопроса.
Вам нужна функция onEdit (), которая позволит вам увеличивать и уменьшать значения столбцов G и H соответственно, когда вы устанавливаете флажок в столбце D:
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const as = e.source.getActiveSheet();
if(as.getName() == "Sheet1" amp;amp; col == 4 amp;amp; e.range.getValue() === true) {
const plus_val = as.getRange(row,7).getValue();
const minus_val = as.getRange(row,8).getValue();
as.getRange(row,7).setValue(plus_val!=''?plus_val 1:1);
as.getRange(row,8).setValue(minus_val!=''?minus_val-1:-1);
}
}
Затем вам нужно настроить управляемый временем триггер для функции clearCheckboxes()
, чтобы снять (сделать False) флажки в столбце D:
function clearCheckboxes(){
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
sh.getRange('D2:D' sh.getLastRow()).clearContent();
}
Инструкции:
- Выберите название листа по вашему выбору; настройте
Sheet1
в обоих сценариях название интересующего вас листа. - Скопируйте и вставьте оба
onEdit(e)
иclearCheckboxes()
в пустой сценарий в редакторе сценариев и нажмите Сохранить. Всякий раз, когда вы устанавливаете флажок в столбце D, будут выполняться нужные вычисления. - Создайте триггер времени для
clearCheckboxes()
. Для этого вы можете щелкнуть триггеры проекта и создать триггер, управляемый временем, для этой конкретной функции.
Ответ №2:
function onEdit(e) {
const sh=e.range.getSheet();
const sr=2;
if(sh.getName()=='Your Sheet Name' amp;amp; e.range.columnStart==4 amp;amp; e.range.rowStart>sr amp;amp; e.range.getValue()=="TRUE") {
e.range.offset(0,3).setValue(e.range.offset(0,3).getValue() 1);
e.range.offset(0,4).setValue(e.range.offset(0,4).getValue() 1);
}
}
function toRunAtMidnight() {
const ss=SpreadsheetApp.getActive();
const sr=2;
const sh=ss.getSheetByName('Your Sheet Name');
sh.getRange(sr,4,sh.getLastRow()-sr 1,1).setValue("FALSE");
}
Комментарии:
1. Спасибо! Я смог включить, и это было идеально. Спасибо!