Автоматическая запись данных с одного листа на другой с помощью выпадающего списка

#google-apps-script #google-sheets #google-docs #google-gsuite

#google-apps-script #google-sheets #google-docs #google-gsuite

Вопрос:

У меня есть выпадающий список с 3 вариантами на моем листе 1, и я хочу скопировать данные с листа 1 на выделенные листы в той же электронной таблице в соответствии с выбранной опцией, как мне это сделать?

Комментарии:

1. все, что нужно сослаться, также подойдет

2. Вы предпочитаете решение Apps Script или решение функций Google Sheet? Кроме того, что вы уже пробовали?

Ответ №1:

Вот мое решение с использованием Apps Script. Если вы хотите обнаружить какие-либо изменения в выпадающем списке и скопировать-вставить свой исходный диапазон на другой лист в зависимости от значений этого выпадающего списка, вы хотите использовать простой триггер onEdit (), который будет запускать вашу функцию каждый раз, когда изменяется значение ячейки (в вашем случае выпадающего списка).

Затем, просто используя методы GetValue() и setValues() вместе с getRange(), вы можете перемещать свой диапазон с одного листа на другой по своему усмотрению. Следующий фрагмент кода содержит понятные комментарии к диапазону примеров и раскрывающемуся списку, показанному ниже:

 function onEdit() {

  // Get sheet 1
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  // Get sheet 2 
  var sheet2 = SpreadsheetApp.getActive().getSheetByName('Sheet2');
  // Get sheet 3 
  var sheet3 = SpreadsheetApp.getActive().getSheetByName('Sheet3');

  // Get value of dropdown
  var value = sheet.getRange('A1').getValue();

  // Get values of the range in Sheet 1 that we want to copy in other sheets
  var range = sheet.getRange('B1:C2').getValues();

// If dropdown value is A
  if(value=='A'){
    // Set the values of the range you want in sheet 2
    // Bare in mind that for this to work the range in the new sheet must
    // be equal size in rows and columns as from the range we are getting in
    // the original sheet
    sheet2.getRange('B1:C2').setValues(range);
  // If it is B (and you could go on with as many as you want)
  }else if(value=='B'){
    sheet3.getRange('B1:C2').setValues(range);
  }else{

  }
} 

введите описание изображения здесь

Комментарии:

1. Спасибо, Матео, дай мне проверить