Z4WKaN7AN6.gif

Что это?

Vocabluary trainer — это маленький скрипт для Гугл Таблиц, который помогает запоминать новые слова. Его прелесть в том, что мы получаем всю мощь таблиц для составления и форматирования базы данных + сразу проверяем себя, не выходя из нее. Проверка слов происходит путём ввода точного перевода, поэтому не запомнить будет просто невозможно!

Как установить?

  1. Создаём новый файл
  2. Расширения > Apps Script
  3. Копируем код скрипта
  4. Нажимаем запуск
  5. Предоставить разрешение > Выбираем свой аккаунт > Дополнительные настройки > Перейти на страницу... > Разрешить
  6. Все, теперь запускаем ещё раз и скрипт привяжется к нашему файлу.

<aside> 💡 Есть более наглядно? Оф. справка Видосик

</aside>

Как использовать?

  1. Выделяем нужный диапозон слов.

<aside> 💡 Обратите внимание, что в зону выделения должны попасть 2 столбца: слово и перевод. Иначе вылетит ошибка.

</aside>

  1. Проходим тест
  2. Результаты появятся в новом листе с названием Answers. Следующий кон, очистит лист, поэтому чтобы засейвить результаты можно просто его переименовать.

Скрипт

let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
let ui = SpreadsheetApp.getUi()
  let menu = ui.createMenu('🧙 Vocabulary trainer')
  menu.addItem('Start','shuffle')
  // menu.addItem('Help','shuffle')
  menu.addToUi()
let answers = []
let selected = sheet.getSelection().getActiveRange().getValues()
if(selected[0].length !== 2){
  throw new Error('Please use only 2 column for selection')
}

function onOpen() {
  shuffle()
}

function shuffle() {
  let m = selected.length, t, i

  while (m) {
    i = Math.floor(Math.random() * m--)
    t = selected[m]
    selected[m] = selected[i]
    selected[i] = t
  }

start()
}

function start() {
  for(let i = 0; i < selected.length; i++){
    let question = ui.prompt(`Question ${i+1}/${selected.length}`, `${selected[i][1]}`, ui.ButtonSet.OK)
    if(question.getSelectedButton() == ui.Button.CLOSE){
      break
    }
    answers.push(question.getResponseText())
  }

result()
}

function result() {
  if (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Answers") === null){
    SpreadsheetApp.getActiveSpreadsheet().insertSheet('Answers')
  }

  const answerSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Answers')
  answerSheet.getDataRange().clear()
  let sum = 0

    for(let i = 0; i < selected.length; i++){
      answerSheet.getRange(`A${i + 1}`).setValue(selected[i][1])
      answerSheet.getRange(`B${i + 1}`).setValue(answers[i])
      if(selected[i][0] != answers[i]){
        answerSheet.getRange(`A${i + 1}:B${i + 1}`).setBackground('Tomato')  
      } else{
        answerSheet.getRange(`A${i + 1}:B${i + 1}`).setBackground('LawnGreen') 
        sum++
      }
   }

  answerSheet.getRange(`A${selected.length + 1}`).setValue('Grade:').setFontWeight("bold")
  answerSheet.getRange(`B${selected.length + 1}`).setValue(`${sum}/${selected.length}`).setFontWeight("bold")
}