Как я могу использовать скрипт в таблицах Google для копирования изображения из одной ячейки в другую? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть скрипт, который я использую для копирования данных из формы в Google Sheet. (Да, я знаю, что могу просто использовать Google Forms, но клиент, с которым я работаю, хотел бы сохранить все это в одном Google Sheet) Вот код, который я использую сейчас, и он отлично работает. Он делает именно то, что я хочу, но есть одно поле, в которое нужно поместить изображение. Я настроил его так, что пользователь переходит к «Вставить», а затем оттуда вставляет изображение в ячейку. Я могу вручную скопировать и вставить изображение с одного листа на другой, но когда я запускаю скрипт, он не копирует изображение, все остальные данные копируются. Любая помощь была бы замечательной. Вот сценарий. Изображение находится в ячейке I3, как я уже сказал, все остальное работает должным образом.

function submitData()  {
var ss        = SpreadsheetApp.getActiveSpreadsheet();
var formSS    = ss.getSheetByName("Form"); //Form Sheet
var datasheet = ss.getSheetByName("Data"); //Data Sheet

 //Input Values
 var values = [[formSS.getRange("E3").getValue(),
             formSS.getRange("I3").getValue(),
             formSS.getRange("E6").getValue(),
             formSS.getRange("I6").getValue(),
             formSS.getRange("E10").getValue(),
             formSS.getRange("I10").getValue(),
             formSS.getRange("E15").getValue(),
             formSS.getRange("I15").getValue(),
             formSS.getRange("E19").getValue(),
             formSS.getRange("I19").getValue(),
             formSS.getRange("E22").getValue(),
             formSS.getRange("I22").getValue(),
             formSS.getRange("E25").getValue(),
             formSS.getRange("I25").getValue(),
             formSS.getRange("E28").getValue()]];

datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 15).setValues(values);
formSS.getRange('E3:E29').clearContent();
formSS.getRange('I3:I29').clearContent();


} 

1 Ответ

1 голос
/ 18 июня 2020

Я изменил ваш сценарий, чтобы он соответствовал изображению в листе данных.

ВАЖНО: Разъедините ячейки изображения на листе формы и оставьте фон белым. Сценарий будет перемещать значения из формы в данные (цвет фона также будет перемещен)

Сценарий получит только первое значение и поместит его в первый столбец, последнюю строку + 1.

Теперь требуется последняя строка (не последняя +1), а затем сценарий перемещает изображение и вставляет другие значения, как вы делали раньше.

Скрипт :

function submitData() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName("Form"); //Form Sheet
  var datasheet = ss.getSheetByName("Data"); //Data Sheet

  //Input Values
  var values = [[formSS.getRange("E6").getValue(),
                 formSS.getRange("I6").getValue(),
                 formSS.getRange("E10").getValue(),
                 formSS.getRange("I10").getValue(),
                 formSS.getRange("E15").getValue(),
                 formSS.getRange("I15").getValue(),
                 formSS.getRange("E19").getValue(),
                 formSS.getRange("I19").getValue(),
                 formSS.getRange("E22").getValue(),
                 formSS.getRange("I22").getValue(),
                 formSS.getRange("E25").getValue(),
                 formSS.getRange("I25").getValue(),
                 formSS.getRange("E28").getValue()]];

  // Get the first value and insert into the first column
  var firstColumn = formSS.getRange("E3").getValue()
  datasheet.getRange(datasheet.getLastRow()+1, 1,).setValue(firstColumn);

  // Get the image and intert into the second column of the same row
  var image = formSS.getRange("I3").moveTo(datasheet.getRange(datasheet.getLastRow(), 2));

  // Get all the other values and insert them into the other columns of the same row
  datasheet.getRange(datasheet.getLastRow(), 3, 1, 13).setValues(values);
  formSS.getRange('E3:E29').clearContent();
  formSS.getRange('I3:I29').clearContent();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...