如何通过每月列名称GooglespreadSheet重新形成从长到长形式的数据时出现所有单元格中的getRange

问题描述 投票:-1回答:1

在R中,data.table库dcast()可以将数据集从宽变换为长形,我如何在googlespreadsheet中执行此操作?

工作表Sheet1

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

Sheet1

Sheet2 A B C D E F 1名称类型YTD JAN FEB MAR 2 =过滤器(Sheet1!A2:F5,不是(isblank(Sheet1!A2:A5)))

Sheet2

从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脚本,无法分辨原因。

google-apps-script google-sheets reshape unpivot melt
1个回答
1
投票

好的,所以根据我的理解,您想要获取第一个表,删除空白产品,然后解压缩。

tnaike的脚本不适合你的原因是你有两个领导者专栏(产品和类型),而不仅仅是一个。这似乎可以正确调整一切。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

  var values = sheet.getDataRange().getValues(); // Retrieve values
  var Result_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

  var result = [];
  result.push(["Name","Type","Month","QTY"]);
  for (var i = 1; i < values.length; i++) {

    for (var j = 1; j < values[i].length; j++) {
      if (values[j][0].length < 1) continue;
      if (values[0][i].length < 1) continue;
      result.push([ values[j][0],values[j][1], values[0][i], values[j][i]]);
    }
  }

  Result_sheet.getRange(1,1,result.length, result[0].length).setValues(result); // Put result
  Result_sheet.sort(1);
}

这导致:

Name/Type/Month/QTY
P1  A   Ja  1
P1  A   Fe  3
P1  A   Ma  4
P2  B   Ja  41
P2  B   Fe  23
P2  B   Ma  455
P3  C   Ja  2
P3  C   Fe  25
P3  C   Ma  5
© www.soinside.com 2019 - 2024. All rights reserved.