Копировать последний ряд при изменении - одновременные записи - PullRequest
0 голосов
/ 26 мая 2019

У меня есть скрипт Google, который копирует последнюю строку этой таблицы на другую таблицу каждый раз, когда делается запись.Эта запись вообще не связана с формой Google - поэтому она не связана с триггером onFormSubmit - эта отправка производится из формы JotForm и автоматически вставляется в электронную таблицу.Что я хотел бы знать, будет ли мой код работать всегда, даже если, скажем, два пользователя делают свои заявки одновременно.

Код работает нормально - похоже, с этим проблем нет.Я использую триггер On change.Но я хотел бы убедиться, что это всегда будет работать.Большое спасибо за вашу помощь заранее.

function copyLastRow() {
  var target = SpreadsheetApp.openById('xxxxx').getSheetByName('Records');
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
 var lastrow = sheet.getLastRow();
 var sourceData = sheet.getRange(lastrow, 1, 1, 10).getValues();
 target.appendRow(sourceData[0]);
}

1 Ответ

0 голосов
/ 26 мая 2019

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

function updateSpreadsheet() {

  //Open Form Responses Spreadsheet and get the Sheet you are reading data from
  // You will need to update ID and SheetName parameters for your own sheets.
  var formResponses = SpreadsheetApp.openById(ID).getSheetByName(SheetName);

  //Open destinationSheet that you are writing to and get the sheet that you are writing to
  // You will need to update ID and SheetName parameters for your own sheets.
  var destinationSheet = SpreadsheetApp.openById(ID).getSheetByName(SheetName);

  //Getting last rows from formResponse and destinationSheet
  //It is not totally necessary to create everything as a variable, but I wanted to make it explicit what I am doing here
  var formResponsesLastRow = formResponses.getLastRow();
  var destinationSheetLastRow = destinationSheet.getLastRow();

  //We are going to calculate the difference between the formResponse and destinationSheet 
  //This lets us know how many more rows have been added since we last updated destinationSheet
  var numberNewRows = formResponsesLastRow - destinationSheetLastRow;


  //Now get the new data to Write  
  var dataToWrite = formResponses.getRange((formResponsesLastRow - numberNewRows) + 1 , 1, numberNewRows, 3).getValues();

  //Write to destinationSheet
  destinationSheet.getRange(destinationSheetLastRow + 1, 1, numberNewRows, 3).setValues(dataToWrite);



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