首页 > 解决方案 > Google Sheets Script - 这个复制列的脚本有效,但它的形式不好?

问题描述

这个脚本有效(我为自己创建了我的第一个脚本而感到自豪!),但我担心拥有两个复制/粘贴类型的函数可能是一种糟糕的形式,尤其是考虑到它们共享一组通用的列。一个点会有很多数据(3,000 行,38 列)。中间应该有停顿吗?脚本是否在开始第二个函数之前完成了第一个函数?我可以拥有两个功能吗?谢谢您的帮助。

//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);    
}

背景:我在一张纸上执行 importxml,然后将值复制/粘贴到另一张纸上。在此仅值页面中,我必须更新 3 列。我在工作表的末尾添加了 3 个 cols,如果原始 cols 为空,我会在其中执行 importxml。但是当然,一旦这些列得到更新,我必须将数据粘贴到原始列中,仅作为值。在我搞砸所有这些之前,我想在它们被覆盖之前备份这 3 个原始 cols。这就是我的脚本所做的。它备份原始列,然后将更新的列粘贴到原始列中。

标签: google-apps-scriptgoogle-sheets

解决方案


试试这个:

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);    
}

推荐阅读