将数据绘制到各自的行

时间:2019-09-10 04:54:36

标签: google-apps-script google-sheets

有一组数据需要在电子表格中显示。我的意思是数据将具有 每行(在本例中为行1,行2等)。我需要在电子表格中显示它们。我怎么能显示 这些数据分别对应其行名。我只能找到绘制数据的范围。

这是我的工作方式

function plotData() {
 var data = [
  {
    "Row1": "Row1 Data",
    "Row7": 5,
    "WillNotBeInOther": 0.75
  },
  {
    "Row2": 5000,
    "Row3": 0,
    "Row4": 5000,
    "Row5": null,
    "Row6": 5,
    "Row7": null,
    "Row8": 0.25,
    "Row9": 0,
    "Row10": 0
  },
  {
    "Row2": 6000,
    "Row3": 20000,
    "Row4": 26000,
    "Row5": null,
    "Row6": null,
    "Row7": null,
    "Row8": null,
    "Row9": 0,
    "Row10": 0
  },
  {
    "Row2": 7000,
    "Row3": 1000,
    "Row4": 8000,
    "Row5": null,
    "Row6": null,
    "Row7": null,
    "Row8": null,
    "Row9": 0,
    "Row10": 0
  }
]

  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "PlotData";
  var sheet = activeSheet.getSheetByName(sheetname);
  var startRow = 4;
  var lastRow = sheet.getLastRow();
  var plottableSheetRange = sheet.getRange(startRow, 3, lastRow-startRow+1, data.length);
  plottableSheetRange.setValue(10)
}

这是我正在处理的电子表格

https://docs.google.com/spreadsheets/d/1tLNZv4F4lpBAnmHN5H0pBiirW4MVIfTexll9jPA03hI/edit#gid=0

code.gs是脚本。

应该看起来像这样

https://docs.google.com/spreadsheets/d/1tLNZv4F4lpBAnmHN5H0pBiirW4MVIfTexll9jPA03hI/edit#gid=1869973739

1 个答案:

答案 0 :(得分:2)

  • 您想要使用Google Apps脚本从以下对象到图像。

    • 发件人:

      $event
    • 收件人:

      enter image description here

  • 您要放置单元格“ B4”中的值。

  • 作为上述值的规范,您只想在第一个索引中使用var data = [ {"Row1":"Row1Data","Row7":5,"WillNotBeInOther":0.75}, {"Row2":5000,"Row3":0,"Row4":5000,"Row5":null,"Row6":5,"Row7":null,"Row8":0.25,"Row9":0,"Row10":0}, {"Row2":6000,"Row3":20000,"Row4":26000,"Row5":null,"Row6":null,"Row7":null,"Row8":null,"Row9":0,"Row10":0}, {"Row2":7000,"Row3":1000,"Row4":8000,"Row5":null,"Row6":null,"Row7":null,"Row8":null,"Row9":0,"Row10":0} ]; 中的Row1的值。

如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。

在使用以下脚本之前,please enable Sheets API at Advanced Google services。如果数组的所有列长度都不相同,则Spreadsheets.Values.update的方法很容易将数组放入Spreadsheet。所以我使用了Sheets API。

模式1:

在此模式下,还将放置从{"Row1":"Row1Data","Row7":5,"WillNotBeInOther":0.75}Row1的键名。

示例脚本:

Row 10

模式2:

在这种模式下,不会放置从function plotData() { var data = [ {"Row1":"Row1Data","Row7":5,"WillNotBeInOther":0.75}, {"Row2":5000,"Row3":0,"Row4":5000,"Row5":null,"Row6":5,"Row7":null,"Row8":0.25,"Row9":0,"Row10":0}, {"Row2":6000,"Row3":20000,"Row4":26000,"Row5":null,"Row6":null,"Row7":null,"Row8":null,"Row9":0,"Row10":0}, {"Row2":7000,"Row3":1000,"Row4":8000,"Row5":null,"Row6":null,"Row7":null,"Row8":null,"Row9":0,"Row10":0} ]; // Convert "data" to an array for putting to Spreadsheet. var values = data.reduce(function(ar, e, i) { if (i === 0) e = {"Row1": e["Row1"]}; // From your replying, the first index is modified for your specification. Object.keys(e).forEach(function(f) { var n = Number(f.replace("Row", "")) - 1; if (!Array.isArray(ar[n])) ar[n] = ["Row " + (n + 1)]; ar[n][i + 1] = e[f]; }); return ar; }, []); // Put the converted array to Spreadsheet. var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetname = "PlotData"; var sheet = activeSheet.getSheetByName(sheetname); var startRow = 4; var range = "'" + sheetname + "'!B" + startRow; Sheets.Spreadsheets.Values.update({values: values}, activeSheet.getId(), range, {valueInputOption: "USER_ENTERED"}); } Row1的键名。

示例脚本:

Row 10

参考: