我有一个与他人共享的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;
}
}
这给了我错误:没有数组转换数组[] []。 (无法将数组转换为数字)
任何帮助将不胜感激!
答案 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);
}
对我来说就是那样。我不知道这是否是解决问题的正确方法,但对我有用,也许它可以帮助其他人。