Флажок Google Spreadsheets с временным сбросом добавляет ценность дополнительным столбцам

#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();
}
  

Инструкции:

  1. Выберите название листа по вашему выбору; настройте Sheet1 в обоих сценариях название интересующего вас листа.
  2. Скопируйте и вставьте оба onEdit(e) и clearCheckboxes() в пустой сценарий в редакторе сценариев и нажмите Сохранить. Всякий раз, когда вы устанавливаете флажок в столбце D, будут выполняться нужные вычисления.
  3. Создайте триггер времени для 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. Спасибо! Я смог включить, и это было идеально. Спасибо!