Удалить часть строки, если установлен флажок

Я пытаюсь создать список задач в Google Таблицах, где я могу установить флажок (значение true / false). В конце дня я хочу удалить все задачи в списке задач, которые отмечены (отмечены как истинные). Я знаю, как удалить целую строку, если флажок установлен и мой код работает. Но в этом случае мне нужно только удалить информацию из флажка от столбца D до K. Я не хочу, чтобы любая другая информация из любого другого столбца в той же строке удалялась.

Как я уже сказал, у меня есть рабочий код. В листе с примерами у меня есть пример, в котором я хочу удалить проект Mario. Этот флажок установлен, и теперь я хочу удалить информацию из столбца D до столбца K.

https://docs.google.com/spreadsheets/d/1EYxtzro_vk-gK1iReyjKQ-WwM5G9Jiu-h-55zuHMWXg/edit?usp=sharing

function deleteCells() { 
var ss = SpreadsheetApp.getActiveSpreadsheet();  
var s = ss.getSheetByName('Blad1');
var r = s.getRange('K:K');    
var v = r.getValues();  
for(var i=v.length-1;i>=0;i--) 
if(v[0,i]=='true')   
s.deleteRow(i+1);
};  

person Raymond Douwes    schedule 23.08.2019    source источник
comment
Хотя я не уверен, смог ли я правильно понять, что вы хотите сделать, если вы хотите удалить строки с отмеченными флажками в столбце K, запустив функцию deleteCells(), например, как насчет изменения if(v[0,i]=='true') на if(v[i][0] === true) { ? Если это был не тот результат, который вам нужен, прошу прощения.   -  person Tanaike    schedule 24.08.2019
comment
Я считаю, что приведенный ниже ответ Тединоза подойдет вам, хотя рассматривали ли вы возможность использования утилиты Google Tasks? он управляет информацией, и вы также можете работать с ней в скрипте приложений.   -  person AMolina    schedule 26.08.2019


Ответы (1)


Вместо удаления строки используйте range.clear(options) для удаления содержимого и форматирования.
Я создал var datasetrange = s.getRange(i+1,4,1,7); для определения диапазона. Обратите внимание, что это диапазон от столбца D до столбца J.

  • datasetrange.clear({contentsOnly: true}); - для удаления содержимого
  • datasetrange.clear({formatOnly: true}); - удалить форматирование

Тогда как отдельное упражнение:

  • s.getRange(i+1,11).setValue(false); - это диапазон для ячейки «K6», и он изменяет значение флажка с «истина» на «ложь» (что предполагает, кстати, что вы использовали значения по умолчанию для флажка).

 function so5763377101() { 
      var ss = SpreadsheetApp.getActiveSpreadsheet();  
      var s = ss.getSheetByName('Blad1');
      var r = s.getRange('K:K');    
      var v = r.getValues();    
      var dataset = [];
      for(var i=v.length-1;i>=0;i--) 
      if(v[0,i]=='true') {  
        // Logger.log("DEBUG: i:"+i+", checkbox = "+v[0,i]);
        var datasetrange = s.getRange(i+1,4,1,7);
        // Logger.log(datasetrange.getA1Notation());
        datasetrange.clear({contentsOnly: true});
        datasetrange.clear({formatOnly: true});
        s.getRange(i+1,11).setValue(false);    
      }
    }
person Tedinoz    schedule 24.08.2019