我正在做一个项目,我把多列/多行库存表变成多行/两列格式用于订单拣选。 我有一个用于选择适当库存表的开关和一个 map(( 函数,该函数从库存 DataRange(( 复制导入的信息。
但是,并非所有数据都位于一致的列中。我想做的是找到一个表达式,如果它所映射的列具有零或"值,则映射下一列。
除非你需要,否则我不会给你完整的代码,但希望只是重要的部分。 这是我所拥有的:
var source = SpreadsheetApp.openById("1xixIOWw2yGd1aX_2HeguZnt8G_UfiFOfG-W6Fk8OSTs"); //This sheet
var srcSht = SpreadsheetApp.getActive();
var sourceMenu = srcSht.getRange('A1');//This is the cell cotaining the dropdown
var menuTest = sourceMenu.getValue();
// Variable for the vars sheet. If it doesn't exist, create it
var varsTest = source.getSheetByName('vars');
if (!varsTest){source.insertSheet('vars');}
var importedA1 = varsTest.getDataRange().getA1Notation();
varsTest.clearContents();
var t1Imp = '=ImportRange("test1_Id", "Stock!A1:F11")';
var varsData = varsTest.getRange('A1');// This is the cell we fill with the importRange formula
varsData.setValue(t1Imp);
var imported = varsTest.getDataRange().getValues();
var newOrder = imported.map(function(item) {
if (item[4] !== NaN){return [[item[0]],[item[4]]];};
if (item[4] === NaN){return [[item[0]],[item[3]]];};}
var orderRange = source.getSheetByName('Sheet1').getRange(10,1,newOrder.length, newOrder[0].length);
orderRange.setValues(newOrder);
Logger.log("t" + newOrder);
Logger.log(newOrder(: [(时间戳省略(] 项目1,订单,焦糖,6,c&c,2,薄荷,3,PB,0,,,项目2,,焦糖,,草莓,,薄荷,,PB,
它似乎跳过了 if 语句,或者我告诉它我的意思是将索引测试为 NaN,这显然永远不会是真的。
我还尝试将"NaN"替换为"未定义"。相同的结果。我尝试查找该物品[4]。值,但它给了我一个错误。我也使用 filter(( 而不是 map(( 尝试了相同的逻辑,但它复制了整个数据集。
我将这些值拉到工作簿中的新"vars"工作表上(以最大程度地减少对 Web 服务的调用(: 测试1 将它们减少到第一列和最后一列,然后输出: 测试
">测试"工作表中第二组项目的"订单"列中的单元格为空白。该订单列的值应该在该数组的 item[3] 中,但我无法让脚本识别空白单元格是空白的。
我是Google Apps Script和JS的新手,但我正在观看很多tuts并在实践中学习。如果我找到解决方案,我会发布它。
谢谢 StackOverflow,如果没有这个社区,我不可能学到这么多东西!
我有一个工作函数,可以做我想做的事。总之: 我必须在新列中创建订单列的副本,以便所有值都对齐。从技术上讲,这不是JS答案,但最简单的答案并遵循良好的电子表格规则。
function rmZeroOrderPS(item){
var source = SpreadsheetApp.openById("<sheetId>"); //This sheet
var varsTest = source.getSheetByName('vars');
var imported = varsTest.getDataRange().getValues();
var i=-1;
while (i <= imported.length){
if(item[8]!= 0) {return [item[0],item[8]]};
i+=1;
};