Скрипт Google Sheets - этот скрипт для копирования столбцов работает, но разве это плохо? - PullRequest
0 голосов
/ 21 февраля 2020

Этот скрипт работает (и я очень горжусь тем, что создал свой первый скрипт!), Но я боюсь, что иметь две функции типа «копировать / вставить» может быть плохим, особенно если учесть, что они имеют общий набор столбцов. В одной точке будет много данных (3000 строк, 38 столбцов). Должна ли быть пауза между ними? Является ли скрипт fini sh первой функцией перед запуском второй? Могу ли я иметь две функции? Спасибо за помощь.

//Copy 3 cols with original data into a backup range.
//Copy the 3 update cols to the original cols as values only

function testReplace_Orig_Review_tag_Rating_Cols_with_Updates () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sheet = ss.getSheetByName('Sheet1');
  var backup = sheet.getRange(3, 35, ss.getLastRow()-3, 3); // backup of original reviews, tags, ratings before they get overwritten 
  var update = sheet.getRange(3, 32, ss.getLastRow(), 3);  //updated reviews, tags, ratings
  var original = sheet.getRange(3, 13, ss.getLastRow()-3, 3); //original reviews, tags, ratings

original.copyTo(backup,SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
update.copyTo(original,SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);    
}

Справочная информация: я делаю импорт xml на одном листе и копирую / вставляю как значения на другом. В этой странице значений только я должен обновить 3 cols. Я добавил 3 столбца в конце листа, где я делаю импорт xml, если исходные столбцы пустые. Но, конечно, как только эти столбцы обновляются, я должен вставить данные в исходные столбцы только в качестве значений. Перед тем, как возиться со всем этим, я хочу создать резервную копию этих трех оригинальных цветов, прежде чем они будут перезаписаны. Это то, что делает мой сценарий. Он создает резервные копии оригинальных столбцов, а затем вставляет обновленные столбцы в исходные.

1 Ответ

1 голос
/ 21 февраля 2020

Попробуйте это:

function testReplace_Orig_Review_tag_Rating_Cols_with_Updates () {
  var ss = SpreadsheetApp.getActive();  
  var sheet = ss.getSheetByName('Sheet1');
  var backup = sheet.getRange(3,35,sheet.getLastRow()-2,3);
  var update = sheet.getRange(3,32,sheet.getLastRow()-2,3);  
  var original = sheet.getRange(3,13,sheet.getLastRow()-2,3);
  original.copyTo(backup,SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  SpreadsheetApp.flush();
  update.copyTo(original,SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...