Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将数据打印到各自的行中_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 将数据打印到各自的行中

Google apps script 将数据打印到各自的行中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,有一组数据需要显示在电子表格中。我的意思是数据将具有 每行(在本例中为第1行、第2行等)。我需要在电子表格中显示它们。我怎么能表现出来 将这些数据转换为各自的行名称。我只能找到绘制数据的范围 以下是我的做法 function plotData() { var data = [ { "Row1": "Row1 Data", "Row7": 5, "WillNotBeInOther": 0.75 }, { "Row2": 5000, "Row3"

有一组数据需要显示在电子表格中。我的意思是数据将具有 每行(在本例中为第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)
}
这是我正在处理的电子表格

code.gs是脚本

应该是这样的

  • 你想用谷歌应用程序脚本实现从以下对象到图像的转换

    • 发件人:

      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}
      ];
      
    • 致:

  • 您希望将单元格“B4”中的值放入

  • 作为上述值的说明,您希望在第一个索引处仅使用
    {“Row1”:“Row1Data”,“Row7”:5,“willnotbeither”:0.75}
    中的
    Row1
    的值
如果我的理解是正确的,那么这个答案呢?请把这看作是几个答案中的一个

在使用以下脚本之前。当数组的所有列长度不相同时,电子表格.Values.update方法很容易将数组放入电子表格。所以我用了API

模式1: 在此模式中,还将放置从
Row1
row10
的关键字名称

示例脚本: 模式2: 在此模式中,不放置从
Row1
row10
的键名

示例脚本: 参考:

您的共享电子表格的脚本似乎与您的问题的脚本不同。我们应该使用哪种脚本?您还可以提供您期望的输出吗?@Tanaike抱歉,我已经用数据更新了脚本。我也列出了样本表。感谢您回复和更新共享的电子表格。当我看到您期望的输出表时,我认为
数据数组的索引可能与列号对应。但是在
数据的第一个索引中,似乎没有使用
{“Row1”:“Row1 data”,“Row7”:5,“willnotbeither”:0.75},
“Row7”:5,“willnotbeither”:0.75}。那么,您能解释一下将
数据
转换为用于放入电子表格的值的逻辑吗?在我的情况下,第一个对象将始终与其余对象不同。因此,与样本表(输出表)中C列中的sheen一样,只有第1行被填充,而对于d列到f列,第2行到第10行被填充。作为第一个对象,
{“Row1”:“Row1数据”,“Row7”:5,“willnotbeither”:0.75}
没有在工作表中列出的任何其他列,因此除第1行外,其他列未填充。感谢您的回复。我为我的理解力差道歉。关于
{“Row1”:“Row1数据”,“Row7”:5,“willnotbeither”:0.75}
“Row1”:“Row1数据”
。但是不使用
“Row7”:5
“willnotbeither”:0.75
。我无法理解这种情况下的逻辑。我不理解
Object.keys(e).forEach(函数(f){
部分。如果名称类似于
共享值
共享百分比
而不是
第1行
第2行
等,该怎么办?我只是想了解一下这个想法。@Serenity感谢您的回复。1.关于
对象。键(e)。forEach(函数(f){
,将检索作为数组元素的对象的每个键。并创建二维数组以放入电子表格。您可以在@Serenity 2上查看更多信息。关于
如果名称类似于共享值、共享百分比而不是第1行、第2行等,我将支持您。但不幸的是,我支持您看不到你问题的远景。我认为这是一个新问题。那么你能通过包含详细信息将其作为新问题发布吗?因为当你的初始问题通过评论更改时,看到你问题的其他用户会感到困惑。通过将其作为新问题发布,包括我在内的用户可以想到你的新问题。此时,time、 请关闭此问题。如果您能合作解决您的新问题,我很高兴。首先,非常感谢您的努力和帮助大自然。很抱歉问了一个新问题。我提出了一个新问题,因为我不明白您是如何将值映射到相应的行名称的。以下是。只有行名称被更改。您可以吗请给我解释一下?@Serenity谢谢你的回复和回复。我想检查一下。
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"});
}
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] = [];
      ar[n][i] = 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 + "'!C" + startRow;
  Sheets.Spreadsheets.Values.update({values: values}, activeSheet.getId(), range, {valueInputOption: "USER_ENTERED"});
}