Нахождение отличий в двух текстовых файлах от DriveApp - PullRequest
0 голосов
/ 11 апреля 2019

Я делаю сценарий, который копирует содержимое Документа Google в текстовый файл и сохраняет его на Google Диске. Затем пользователь редактирует документ и после его завершения копирует новую версию на диск в отдельный файл. Я выполнил эту часть, но теперь мне нужно знать, как заставить скрипт автоматически сравнивать различия в тексте, а затем изменять цвет этих различий в документе. Есть идеи?

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

function copyQuestions() {
  var body = DocumentApp.getActiveDocument().getBody();
  var getquestions = body.getText()
  DriveApp.createFile('tempquestions.txt', getquestions);
  DocumentApp.getUi()
  .alert('Questions have been copied to a new file on Google Drive. Get to work, and be sure not to delete the file!')
}
function copyAnswers() {
  var body = DocumentApp.getActiveDocument().getBody();
  var getanswers = body.getText()
  DriveApp.createFile('tempanswers', getanswers);
  DocumentApp.getUi()
  .alert('Coloring answers...')
}

Скрипт создает файлы с копиями содержимого документа. Мне нужно знать, как сравнить различия между двумя из них сейчас. Спасибо!

1 Ответ

1 голос
/ 11 апреля 2019

Звучит так, как будто тебе нужен двигатель Diff. Вы можете попытаться написать свой собственный, используя известные алгоритмы, такие как Расстояние Левенштейна или Коэффициент Кости , но если вы не очень склонны, вы можете попробовать найти существующую библиотеку JavaScript, которая совместим со скриптом приложений.

Сделал быстрый поиск и нашел несколько репозиториев с открытым исходным кодом. Я не могу ручаться за их совместимость со скриптом приложений, но, по крайней мере, один из них кажется жизнеспособным (JSDiff поддерживает EcmaScript 3, где скрипт приложений поддерживает до EcmaScript 5):


JSDIFF


УЗЕЛ-DELTA

...