【问题标题】:Google sheets api adding multiple rowsGoogle Sheets api添加多行
【发布时间】:2016-04-03 23:24:32
【问题描述】:

我正试图弄清楚这一点,但我一定忽略了一些基本的东西。 (我花了好长时间才意识到我没有添加触发器。)

提交表单时,如果该页面的行数不足,它会自动展开。我有一个对帐页面,它逐行提取提交的数据并分析差异(表单收集可计费的时间和任务。)

因此,当 Form Responses 1 页面将展开时,我想在表单提交上使用触发器来向对帐页面添加一行并将公式复制下来。不过,我似乎无法添加该行。查看google page 以扩大行数,我也不确定我在那里做错了什么,但我认为我需要在我的计算机上添加更多的java 功能。

如果我只是简单地将示例复制并粘贴到新工作表中,大部分代码都是黑色的,而不是标准的编辑器颜色。保存弹出“Missing ; before statement. (line 1, file "Code")" 第一行就是“import com.google.gdata.client.spreadsheet.*;” 所以第零:我可以用来添加那个空白行的最基本的代码是什么? 然后首先:我是否需要导入一堆东西才能​​让这个(添加行)工作? 第二:如果是这样,并且我将工作表的所有权转让给某人,他们是否也需要进行导入? 第三:如果是这样,并且我想在另一台设备上进行编辑,我是否也需要在那里进行导入? 第四:该示例使用 Update() 但我似乎无法在 javascript 或 googlesheets api 文档中找到 Update() 函数。

这是我正在尝试的代码,注释掉的变体似乎不起作用:

function onFormSubmit(e) {
Logger.log('form submit triggered') 
  var sheet = SpreadsheetApp.getActive()
  var sss = sheet.getSheetByName('Reconciliation')
  var col2 = sss.getRange("B:B");
  var col2val = col2.getValues();
  var counter = 0;
  var sssrange = sss.getDataRange();

//  sss.Rows = sss.getLastRow() + 1 //Object does not allow properties to be added or changed if I uncomment - this seems to match the google example line though
Logger.log(sss.getLastRow());//=8
  var newsssrange = sssrange.offset(1,0); // didn't actually think this would work (since it also had the .update() part that previously didn't work for me) but came across it and was getting desparate.
//  sss.setRowCount(sss.getLastRow() + 1); // TypeError: Cannot find function setRowCount in object Sheet. 
Logger.log(sss.getLastRow()); //=8 
//  sss.Update();//TypeError: Cannot find function Update in object Sheet.
}

【问题讨论】:

    标签: google-api google-sheets google-spreadsheet-api google-forms


    【解决方案1】:

    叹息...我仍然想知道如何添加更多行,但我确实回答了我最初添加一行的需求,因为表单提交只添加一行。所以我要回答这个问题,因为我进行了很多搜索,但由于某种原因从未出现过,如果有人遇到同样的问题,也许会发现这很有用。

    function onFormSubmit(e) {
      var sheet = SpreadsheetApp.getActive()
      var sss = sheet.getSheetByName('Reconciliation')
      sss.appendRow(['']);
    }
    

    请注意,这会添加一个空行。如果您第二次运行它,它不会添加第二个空白行,因为 appendRow() 在最后一行数据之后添加。如果您在其中放置一个字符串或其他东西并一遍又一遍地运行它,您将得到多行。

    我真的很想知道添加多行,因为这会出现,我似乎仍然缺少一些东西,可能很明显。

    【讨论】:

      【解决方案2】:

      你知道arrayformula 会自动换行吗?如果将此公式粘贴到 Sheet2 中:

      =OFFSET(Sheet1!A1,,,counta(Sheet1!A:A))
      

      然后将新值粘贴到 Sheet1 范围 A:A 中,然后将在 Sheet2 上添加新行。

      【讨论】:

      • 嗯,这绝对可以。它可以很好地抓取数据。不过,它并没有把公式拉下来。有没有办法让我也想多了?
      • 我认为,您可以在 arrayFormulas 的帮助下完成所有工作。有很多examples in stackoverflow。现在您需要在对帐页面中添加一行并将公式复制下来。但是 ArrayFormulas 几乎可以完成任何工作,而无需将公式拉下来。 OFFSET 仅供复制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多