复制列,相乘并粘贴到另一张工作表中

时间:2019-10-25 13:49:54

标签: google-apps-script

我有一个与他人共享的Google电子表格以及其中的价格表。我要复制产品和价格列,要对标记乘以价格并将这两个列粘贴到另一个电子表格中。

我是一个绝对的初学者,并尽我所能。复制列没有问题,即使我设法乘以价格,但我也想不出如何将我的新值粘贴到通讯表中。

function createNewList(){

var sharedList = SpreadsheetApp.openById('1_XWPVgBQwqV3B1C2NVspyR7Hw2ff3fzp-N23idbXVMA')
var ss = sharedList.getSheetByName("STOCK");
var data = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn() ).getValues();  

var products = ss.getRange(1, 1, ss.getLastRow(), 1).getValues();
var totalFiles = products.length;
var prices = ss.getRange(1, 2, ss.getLastRow(), 1).getValues();

var newWb = SpreadsheetApp.openById('other_url');
var newSs = newWb.getSheetByName('New List');
var markupSs = newWb.getSheetByName('markup'); 
var markup = markupSs.getRange('B1').getValue();

//  correct some format issues
  replaceInSheet(prices, 'U$ ', '');
  replaceInSheet(prices, '$','');

var newPrices = [];
for (var i=0; i<totalFiles; i++){
    newPrices.push(prices[i] * markup) ;
}

newSs.getRange(1, 1, totalFiles, 1).setValues(products);
newSs.getRange(1, 2, totalFiles, 1).setValues(newPrices);

}


function replaceInSheet(values, to_replace, replace_with) {
   for(var row in values){
    var replaced_values = values[row].map(function(original_value) {
      return 
    original_value.toString().replace(to_replace,replace_with);
    });
   values[row] = replaced_values;
  }
}

这给了我错误:没有数组转换数组[] []。 (无法将数组转换为数字)

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

最后,我使用循环来解决这个问题。

删除了此内容

var newPrices = []; for (var i=0; i<totalFiles; i++){ newPrices.push(prices[i] * markup) ; }

并对此进行了更改:

newSs.getRange(1, 2, totalFiles, 1).setValues(newPrices);

对于此循环:

for (var i=0 ; i<totalFiles ; i++ ){ newSs.getRange(i+1, 2, 1, 1).setValue(prices[i] * markup); }

对我来说就是那样。我不知道这是否是解决问题的正确方法,但对我有用,也许它可以帮助其他人。