Использование скрипта приложений для подсчета флажков в Google Sheets

Использование скрипта приложений для подсчета флажков в Google Sheets

9 марта 2023 г.

У вас есть флажки в электронной таблице, и вы захотите их легко посчитать. Что ж, этот скрипт, который я предоставлю, поможет вам именно в этом. Неопытные программисты могут легко следовать инструкциям и добавлять этот скрипт в свои проекты.

Намасте! Это Нибеш Хадка. ==Я фрилансер, разрабатываю скрипты для автоматизации приложений Google Workspace, таких как Gmail, Google Таблицы, Google Документы и т. д.==

Для тех, кто не занимается кодированием

Если вы не кодер и не хотите утруждать себя утомительным объяснением, вы можете просто выполнить следующие действия:

Open Script Editor

  1. Откройте редактор скриптов. В электронной таблице перейдите на вкладку расширений и откройте скрипт приложения, как показано на изображении выше.

2. Удалите весь код из code.gs. Затем скопируйте и вставьте код из раздела Полный код в этом блоге.

3. Сохраните и перезагрузите электронную таблицу. Теперь снова откройте скрипт приложений, следуя инструкциям на шаге 1 (иногда скрипт не работает без сохранения и перезагрузки).

После этого вам просто нужно внести небольшое редактирование, как указано ниже.

Полный код

Вот полный сценарий этого блога:

// make minor change here.
// insert the number equivalent of your column with checkboxes here inside square boxes, like [1,2]
// for instance 1 for A, 5 for E, and so on.
const checkBoxColNumber = [5, 8];

/**
 * The function creates a custom menu in spreadsheet
 */
function menu() {

  SpreadsheetApp.getUi()
    .createMenu("Count Checkboxes")
    .addItem("Count Checkboxes", "countCheckbox")
    .addToUi();

}

/**
 * OnOpen is resposbile to insert menu to spreadsheet.
 */
function onOpen(e) {
  menu();
}



/**
 * CountCheckbox goes through the active sheet and counts the number of checked and unchecked box among non-empty rows
 */
function countCheckbox() {

  // get sheet and data
  let sheet = SpreadsheetApp.getActiveSheet();
  let data = sheet.getDataRange().getValues();
  // remove first header column
  data.shift();

  // initate counts as zero
  let trueCount = 0;
  let falseCount = 0;

  // value count will be a nested list but as same length as Counting Checkboxes
  let checkBoxColValueCounts = [...checkBoxColNumber];

  // loop through checkBoxColNumber list and data list 
  for (let j = 0; j < checkBoxColNumber.length; j++) {
    for (let i = 0; i < data.length; i++) {
      // [...new Set(data[i])].filter(String) check to get unique value if its either just true or false
      if ([...new Set(data[i])].filter(String)[0] === true || [...new Set(data[i])].filter(String)[0] === false || data[i].join("") === "") { continue; }
      // if values is true push increase true count else false count
      if (data[i][checkBoxColNumber[j] - 1] === true) {
        trueCount += 1;

      } else {
        falseCount += 1;

      }
    }

    // add true and false count as nested list in respective place
    checkBoxColValueCounts[j] = [trueCount, falseCount];
    // reset 
    //console.log(checkBoxColValueCounts)
    trueCount = 0;
    falseCount = 0;
  }

  // create alert string with all info embeded
  let countStatsString = "";
  for (let j = 0; j < checkBoxColValueCounts.length; j++) {
    countStatsString += `n In the ${checkBoxColNumber[j]} column, There are ${checkBoxColValueCounts[j][0]} boxes checkd and ${checkBoxColValueCounts[j][1]} unchecked boxes among non-empty rows.`
  }
  // alert the result
  SpreadsheetApp.getUi().alert(countStatsString);
}

Использование сценария в электронной таблице

Чтобы этот скрипт работал в вашей электронной таблице, вам нужно внести небольшое изменение в код.

// make minor change here.
// insert the number equivalent of your column with checkboxes here inside square boxes, like [1,2]
// for instance 1 for A, 5 for E, and so on.
const checkBoxColNumber = [5, 8];

Посмотрите этот код в начале, вам нужно будет [5, 8] заменить эти значения числовым эквивалентом букв, представляющих столбцы со значениями checkbox в вашем электронная таблица. Например, 5 для E и 8 для H. Если это всего один столбец, просто вставьте одно значение в квадратное поле без запятой, например [5].

Навигация по меню

После этого вы должны сохранить сценарий и перезагрузить электронную таблицу. Вы должны увидеть меню в своей электронной таблице с заголовком «Count Checkboxes», как на изображении ниже.

Menu In Spreadsheet

Когда вы запустите эту функцию, вы увидите окно предупреждения с суммой всех отмеченных и снятых флажков для непустых строк в вашей электронной таблице.

Count Checkbox Result

Спасибо за уделенное время

Если вы хотите, чтобы я писал короткие и быстрые блоги, подобные этим, оставляйте запросы в комментариях.

==Я создаю надстройки для Google, а также могу написать для вас скрипты Google Apps. Если вам нужны мои услуги, дайте мне знать .==

Follow and Share


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE