【发布时间】:2018-03-05 17:56:36
【问题描述】:
希望从用作订单输入表单的 Google 表格文件的第一张表格 (POTemplate) 中的多个单元格中获取值。第 22 行是表单中的第一行,它从我们的用户那里收集有关订购商品的数据。
我想设置这些值的选项卡 (POHistory) 将用作每个订单键入 POTemplate 选项卡的所有订单详细信息的运行日志。 PO 模板日志中记录的每个条目都应包括每个订单的唯一 PO 编号(可在 POTemplate 选项卡的单元格 N3 中找到)和 PO 日期(POTemplate 选项卡的单元格 N4)。我真诚地感谢您的帮助。
function submit() {
var app = SpreadsheetApp;
var tplSheet = app.getActiveSpreadsheet().getSheetByName("POTemplate");
var tplFRow = 22, tplLRow = tplSheet.getLastRow();
var tplRowsNum = tplLRow - tplFRow + 1;
var tplFCol = 1, tplLCol = 16;
var tplColsNum = tplLCol - tplFCol + 1;
var rangeData = tplSheet.getRange(22, 1, tplRowsNum, tplColsNum).getValues();
var colIndexes = [0, 3, 10, 12, 15];
var fData = filterByIndexes(rangeData, colIndexes);
var target = "POHistory";
var targetSheet = app.getActiveSpreadsheet().getSheetByName(target);
var tgtRow = targetSheet.getLastRow() + 1;
var tgtRowsNum = fData.length - tgtRow + 1;
var tgtCol = 1;
var tgtColsNum = fData[0].length - 1 + 1;
targetSheet.getRange(tgtRow, tgtCol, tgtRowsNum,
tgtColsNum).setValues(fData);
}
function filterByIndexes(twoDArr, indexArr) {
var fData = [];
twoDArr = twoDArr.transpose();
for(var i=0; i<indexArr.length; i++) {
fData.push(twoDArr[indexArr[i]]);
}
return fData.transpose();
}
Array.prototype.transpose = function() {
var a = this,
w = a.length ? a.length : 0,
h = a[0] instanceof Array ? a[0].length : 0;
if (h === 0 || w === 0) {return [];}
var i, j, t = [];
for (i = 0; i < h; i++) {
t[i] = [];
for (j = 0; j < w; j++) {
t[i][j] = a[j][i];
}
}
return t;
}
【问题讨论】:
标签: google-apps-script google-sheets