【问题标题】:How to add data to a specific row in Google Sheets using Google Script如何使用 Google Script 将数据添加到 Google 表格中的特定行
【发布时间】:2017-03-20 19:20:41
【问题描述】:

在我的 Google 表格中,我在名为 colorRow 的变量中有索引。我只是想向工作表中的该行添加一些数据,但数据一直在页面下方的其他行中。我究竟做错了什么?

var data = [];
// Some more fields in data array
data.push("Final Submission Date: " + new Date());
// target_sheet.insertRowAfter(colorRow); // Tried this didn't work
target_sheet.appendRow(data);

我需要想办法重置追加计数器,以便我可以将其设置为行 {colorRow},或者如果有办法可以添加到特定行,可能类似于

target_sheet.addAt(7, data)

这样的东西是理想的。

【问题讨论】:

  • “在名为colorRow 的变量中的索引”是什么意思?为什么 {colorRow} 周围有花括号?它是 JSON 对象,而不是数组?
  • 花括号只是表示我将使用该变量来确定应填充哪一行。 colorRow 只是数据需要出现的行号。 data 是我要填充的数组。
  • colorRow 应该在getRange(start row, start column, number of rows, number of columns) 的第一个参数中使用您希望数据从colorRow 开始设置所以:getRange(colorRow, start column, number of rows, number of columns) 如果所有数据都放在一行中,那么number of rows 将是 1。但我不知道您的数据数组是如何设置的。有时会发生的一个问题是内部数组中有不同数量的值,但我不知道您的数据是否会发生这种情况。如果您的数据只是一个一维数组,并且您想要 1 行,并且每个元素一个
  • 单元格值,那么您需要做的就是将数据包装在另一个外部数组中。

标签: google-apps-script google-sheets google-spreadsheet-api


【解决方案1】:

你不能使用 appendRow 来做你想做的事。您正在使用:

target_sheet.appendRow(data);

你需要使用setValues()

target_sheet(start row, start column, number of rows, number of columns).setValues(data);

在您的情况下,如果您想覆盖(编辑)现有行,则需要找到其中包含索引的行,并将该数字用于start row 参数。

var data, dataAs1D,dataFromCol1,ouss, target_sheet, lastRow,rowToEdit;

ss = SpreadsheetApp.getActiveSpreadsheet();
target_sheet = ss.getSheetByName('name');

lastRow = target_sheet.getLastRow();

dataFromCol1 = target_sheet.getRange(1,1,lastRow,1).getValues();//Get all col A values
dataAs1D = dataFromCol1.toString().split(",");//Convert 2D array to 1D

rowToEdit = colorRow;//

data = ['one','two','three'];
outerArray = [];//Assign empty array to variable name
outerArray.push(data);
target_sheet.getRange(rowToEdit,1,data[0].length,data.length).setValues(data);

此示例假设您的索引号位于第一列。

【讨论】:

  • 我有数据作为一个数组。我可以直接使用吗?如果不是,我如何将其转换为对象?那是我最大的问题。如果我将数据数组按原样用于 setValues(),则会得到无法将数组转换为 Object[][]。
  • 你可以定义一个外层数组,然后将数据数组推入到外层数组var outerArray; outerArray=[]; outerArray.push(data);那将只是一行数据。如果您的数据不是一行,您可能需要遍历数据,并为每一行创建一个内部数组。
  • 我已经接受了主要答案,但推送数组也不起作用。即使逐行也行不通。我不得不手动遍历每个元素并手动分配。似乎没有其他方法可以更优雅地做到这一点。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
相关资源
最近更新 更多