Автоматически копировать информацию после изменения текста в ячейке - PullRequest
0 голосов
/ 02 августа 2020

Мне нужна помощь экспертов.

Пожалуйста, взгляните на эту таблицу: https://docs.google.com/spreadsheets/d/1tSl8LxhLGoQMVT_83Ev4jMu_Fo1AW8lN6N8Yw8kX44U/edit#gid = 640017957

Вот история (вкратце ):

Наша компания имеет дело с множеством различных продавцов предприятий электронной коммерции, которые хотят продать свой бизнес новым владельцам. Для каждого продавца у нас есть специальный лист c (продавец A, продавец B, продавец C в приведенном выше примере таблицы), где мы заполняем различные данные, включая последнее действие и следующее действие, которое мы предприняли / должны предпринять. при ведении переговоров о продаже бизнеса с каждым из наших потенциальных покупателей. Мы пытаемся найти простой способ автоматически сохранять данные, которые мы заполняем в столбце «последний шаг», чтобы каждый раз, когда мы обновляем ячейку в этом столбце, данные автоматически копировались на лист, в котором хранится вся история общения. с каждым покупателем для каждой сделки.

Я подумал о создании вкладки, такой как лист «все действия» в приведенном выше примере электронной таблицы, где каждый раз, когда мы обновляем данные в столбце «последнее действие», новый Строка будет автоматически добавлена ​​в лист «все действия» с соответствующими данными, отображаемыми там.

Есть ли способ достичь этой цели? Если нет, порекомендуете ли вы другой метод для получения аналогичных результатов, чтобы мы могли автоматически сохранять (и при необходимости видеть) все данные, которые были введены в прошлом в столбце «последнее действие»?

Ответы [ 3 ]

1 голос
/ 03 августа 2020

Вам необходимо использовать скрипт Google Apps и, в частности, триггер onEdit.

Попробуйте следующее:

function onEdit(e) {

  var row = e.range.getRow();
  var col = e.range.getColumn();
  if ( e.source.getActiveSheet().getName() != "All actions" && row>1 && col==2 ){
     s_name = e.source.getActiveSheet().getName();
     b_name = e.source.getActiveSheet().getRange(row,1).getValue();
     a_taken = e.source.getActiveSheet().getRange(row,2).getValue();
     e.source.getSheetByName("All actions").appendRow([s_name,b_name,a_taken,new Date()])
  }
}

Чтобы использовать эту функцию, вам нужно go в электронную таблицу файловое меню; щелкните Инструменты => Редактор сценариев , очистите файл code.gs и скопируйте вышеупомянутый фрагмент кода. Затем, каждый раз, когда продавец редактирует столбец последнее действие , соответствующая информация будет добавляться в лист Все действия .

1 голос
/ 02 августа 2020

Для этого можно использовать триггеры.

На листе выберите Инструменты> Редактор сценариев. В редакторе скриптов нажмите Edit -> Current Project Triggers.

В этом окне в правом нижнем углу есть кнопка «Добавить триггер».

Когда вы добавляете триггер, установите «Выберите тип события» на «При изменении». Ссылайтесь на функцию, которую вы sh запускаете и которая будет выполнять работу по добавлению информации.

Вам нужно будет написать функцию JavaScript (в редакторе скриптов) для выполнения вставки.

Если вы не знакомы с JavaScript и не используете его для работы с Google Таблицами, кривая обучения не будет очень крутой, чтобы сделать эту базовую c вещь. Я рекомендую покопаться. Мощь, которой вы будете обладать при работе с таблицами, стоит потраченного времени.

0 голосов
/ 03 августа 2020

Попробуйте следующее:

function onEdit(e) {
  var sh=e.range.getSheet();
  var s_name=sh.getName();
  if ( s_name!= "All actions" && e.range.rowStart>1 && e.range.columnStart==2 ){
    values=sh.getRange(e.range.rowStart,1,1,2).getValues()[0];
    e.source.getSheetByName("All actions").appendRow([s_name,values[0],values[1],new Date()])
  }
}
...