Можно ли вставить данные Google Sheet в скрипт Google Doc? - PullRequest
0 голосов
/ 06 июня 2019

Я ОЧЕНЬ новичок в написании кода и учитель, поэтому я хочу написать скрипт Google Doc, чтобы найти неправильные слова в абзаце в Google Doc и заменить их правильными словами.Однако мне нужны правильные и неправильные слова, взятые из таблицы Google Sheet.

У меня есть некоторый код (см. Ниже), который находит и заменяет слова (Привет -> Здравствуйте), но это не удобно для пользователя.

Find and Replace code

Я экспериментирую с spreadsheets.value.get, но в данный момент он мне недоступен.Я на трассе или нет где рядом?Есть идеи?Спасибо.

1 Ответ

0 голосов
/ 06 июня 2019

Чтобы ответить на ваш вопрос, я бы переосмыслил даже получение значений из электронной таблицы.Вы хотите использовать объект javascript. Объект - это место для хранения пар ключ-значение.Они очень эффективны как для хранения, так и для извлечения данных.

Если возможно, я бы сохранял слова и замены в виде пар ключ-значение в объекте, например так:

var myObject = {
  "hi": "hello",
  ...
}

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

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

(столбец A - это ключ ["hi"], столбец B - это значение ["Hello"])

var spreadsheet = SpreadsheetApp.openById('SPREADSHEET ID HERE');
var sheet = spreadsheet.getSheetByName('SHEET NAME HERE')
var range = sheet.getRange('A1:B100');
var values = range.getValues();

var myObject = {};

for (row in values) {
  myObject[values[row][0]] = values[row][1];
}

myObject будет выглядеть примерно так:

{
  "hi": "hello",
  ...
}

Теперь просто зациклите ваш объект и замените, как вы сделали на скриншоте, который вы прикрепили, например:

for (key in myObject) {
  body.replaceText(key, myObject[key]);
}

Такжевместо простого поиска и замены ключа вы можете использовать шаблон regex .Нынешний способ сделать это не помешает изменить "t hi s" на "t hello s".Приведенный ниже шаблон будет определять только те слова, которые соответствуют key, а не буквенные комбинации в любом месте текста.

for (key in myObject) {
  body.replaceText('/\b' + key +'\b/gi', myObject[key]);
}
...