google-apps-script - 当按月列名称GooglespreadSheet将数据从宽变为长时,如何在所有单元格中出现getRange
问题描述
在 R 中,data.table 库 dcast() 可以将数据集从宽形转换为长形,我如何在 googlespreadsheet 中做到这一点?
表 1
Name Type YTD JAN FEB MAR
Product 1 A 8 1 3 4
Product 2 B 519 41 23 455
Product 3 C 32 2 25 5
NA D 3 NA 2 1
Sheet2 ABCDEF 1 名称类型 YTD JAN FEB MAR 2 =filter(Sheet1!A2:F5,not(isblank(Sheet1!A2:A5)))
在 A1 的 Sheet3 中显示重新整形的数据
[
** 不一定需要 YTD 的 C 列。
我调整的脚本不起作用:来自 Tanaike
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var values = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues(); // Retrieve values
var Result_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var result = [];
for (var i = 1; i < values.length; i++) {
for (var j = 1; j < values[i].length; j++) {
result.push([values[0][i], values[j][0], values[j][i]]);
}
}
Result_sheet.getRange().setValues(result); // Put result
}
我对 java 脚本太陌生了,无法说出原因。
解决方案
@JG 的想法是正确的,但是该代码中有几个错误(例如 i 和 j 转置)导致 @rane 评论错误。
这应该可以满足操作的要求,而无需像Sheet2中间步骤中那样进行过滤。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // identify source sheet
var values = sheet.getDataRange().getValues(); // Retrieve values
var Result_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var result = [];
result.push(["Name","Type","Date","YTD","QTY"]);
for (var i = 1; i < values.length; i++) {
for (var j = 3; j < values[i].length; j++) {
if (values[i][j].length < 1) continue; // skip columns where 'qty' is blank, remove this line if you want empty value rows
if (values[i][0].length < 1) continue; // skip rows where 'Name' is blank
result.push([ values[i][0], values[i][1], values[0][j], values[i][2], values[i][j] ]);
}
}
Result_sheet.getRange(1,1,result.length, result[0].length).setValues(result); // Populate results
}
这导致...
Name Type Date YTD QTY
Product 1 A JAN 8 1
Product 1 A FEB 8 3
Product 1 A MAR 8 4
Product 2 B JAN 519 41
Product 2 B FEB 519 23
Product 2 B MAR 519 455
Product 3 C JAN 32 2
Product 3 C FEB 32 25
Product 3 C MAR 32 5
推荐阅读
- fortran - 在 Fortran powerstation 中获取错误未解决的外部符号 _GET_COMMAND_ARGUMENT@12、GETARG@12
- r - R中的ggplot2:一些变量有多个分组
- javascript - 如何使用 javascript 清除 JSON 列表
- android - 如何在 Android 的启动画面期间创建身份验证用户
- c - 在 X11 中获取窗口属性长度的惯用方法?
- ssrs-2016 - 创建/编辑订阅时禁用 SSRS 报告参数选择列表
- ios - UIScrollView,来自 viewDidLayoutSubviews 的 contentView 边界错误
- angular - 带有“元素[属性]”格式的选择器的结构指令
- node.js - “路径”参数必须是字符串类型。收到未定义。不知道为什么?
- python - 如何获得具有交替距离的 xticks?