Google Sheets - Найти и заменить несколько кодов - PullRequest
2 голосов
/ 09 января 2020

Может быть, кто-то может помочь мне с моей проблемой.

Сначала немного предыстории: я скопировал некоторые чаты WhatsApp в Google Sheets. Я использую латекс для создания книги, содержащей чаты. Google Sheet может отображать все Emojis из WhatsApp, латекс, конечно, нет. Поэтому я скачал Emojis в виде png-файлов и определил латексные команды для включения этих эмодзи в виде графиков c. Например: я тоже показываю обычные улыбающиеся смайлики, которые я печатаю. У меня есть список с сотнями смайликов в одном ряду и соответствующей командой в следующем ряду. До сих пор я использовал search and replace -> replace all в одном листе для каждого типа смайликов. Но так как это занимает несколько часов, я подумал, есть ли способ сделать это более эффективным.

Вот таблица с небольшим примером: Google Sheet

Заранее спасибо !

enter image description here

1 Ответ

3 голосов
/ 09 января 2020
  • Вы хотите заменить Emojis на определенные латексные команды.
    • Например, вы хотите заменить следующим образом.
    • С 03.01.19, 00:29 - me: Hi ? до 03.01.19, 00:29 - me: Hi \nettnett.
  • Вы хотите добиться этого с помощью Google Apps Script.

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

Поток:

Ход этого примера сценария следующий. Этот пример сценария использует вашу общую электронную таблицу.

  1. Извлечение данных из листа Codes for Smileys.
  2. Создание тела запроса для запроса findReplace метода batchUpdate API-интерфейса Sheets.
  3. Запустите метод batchUpdate.

Пример сценария:

Этот сценарий использует Sheets API. Поэтому, прежде чем запускать сценарий, , пожалуйста, включите API Sheets в расширенных службах Google.

function myFunction() {
  var dataSheet = "Codes for Smileys";
  var sourceSheet = "unedited Chats with Smileys";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var data = ss.getSheetByName(dataSheet).getDataRange().getValues();
  data.shift();
  var sheetId = ss.getSheetByName(sourceSheet).getSheetId();
  var requests = data.map(function(row) {return {findReplace: {sheetId: sheetId, find: row[0], replacement: row[1]}}});
  Sheets.Spreadsheets.batchUpdate({requests: requests}, ss.getId());
}
  • В этом примере сценария используется ваша общая электронная таблица. Таким образом, в этом случае таблица данных составляет Codes for Smileys. И исходный лист для преобразования: unedited Chats with Smileys.

Примечание:

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

Ссылки:

Добавлено:

  • Вы хотите поместить преобразованные значения на лист Chat with Latex Code.

Пример сценария для достижения вышеуказанного выглядит следующим образом.

Пример сценария:

function myFunction2() {
  var dataSheet = "Codes for Smileys";
  var sourceSheet = "unedited Chats with Smileys";
  var destinationSheet = "Chats with LaTeX Codes";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(dataSheet);
  var data = ss.getSheetByName(dataSheet).getDataRange().getValues();
  data.shift();
  var srcSheet = ss.getSheetByName(sourceSheet);
  var tempSheet = srcSheet.copyTo(ss);
  var sheetId = tempSheet.getSheetId();
  var requests = data.map(function(row) {return {findReplace: {sheetId: sheetId, find: row[0], replacement: row[1]}}});
  Sheets.Spreadsheets.batchUpdate({requests: requests}, ss.getId());
  var tempValues = tempSheet.getDataRange().getValues();
  var destSheet = ss.getSheetByName(destinationSheet);
  destSheet.getRange(destSheet.getLastRow() + 1, 1, tempValues.length, tempValues[0].length).setValues(tempValues);
  ss.deleteSheet(tempSheet);
}
  • В этом примере сценария следующий поток это запустить.
    1. Скопируйте исходный лист unedited Chats with Smileys как временный лист.
    2. Создайте тело запроса для метода batchUpdate для временного листа.
    3. Запустите batchUpdate.
    4. Скопируйте преобразованные значения из временного листа в лист назначения Chats with LaTeX Codes.
      • В этом случае преобразованные значения помещаются в последнюю строку листа.
    5. Удаление временного листа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...