@Andrew2020

Как сделать пользовательскую функцию для гугл-таблицы?

Надо сделать такую функцию:

Увеличение на один значения определенной ячейки, в которую и будет помещена функция, если у ячейки, расположенной в конкретном диапазоне ячеек, появляется значение-ссылка.

Суть: это план работы в гугл-таблице, медиаплан, в который забиты темы публикаций, а когда публикация выходит - к записи крепится ссылка, в результате чего значение ячейки, в которой фиксируется количество вышедших публикаций, должно увеличиваться на один. Я тут что-то соорудил, спасибо Максиму Стоянову, который дал работающую функцию hasLink(). Но явно знаний не хватает.

function makeTotal(sells){
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
 
  var range = sheet.getRange(sells);
  var values = range.getValues();
  var z = 0;
  
    for (var i=0;i < range.length;i++){
      if(hasLink(values)){z++;}
      
      }
  return z;
    }


  

      function hasLink ( cell_address ) {
  const sheet = SpreadsheetApp.getActiveSheet();
  
  const formula = sheet.getActiveRange().getFormula();
  const args = formula.match(/hasLink\(([^\)]*?)\)/i)[1].trim();
  range = sheet.getRange(args);
  
  const values = range.getRichTextValues();
  
  const result = [];
  
  for ( let cells of values ) {
    for ( let cell of cells ) {
      const link_url = cell.getLinkUrl();
      if (link_url) result.push(link_url);
    }
  }
  
  return result.length ? true : false;
}
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
А не проще ли так считать ссылки? (считает в столбце A):
=СЧЁТЗ(ЕСЛИОШИБКА(filter(A:A;REGEXMATCH(A:A;"(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?"))))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы