Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 如何使用AppendRow_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何使用AppendRow

Google apps script 如何使用AppendRow,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我从任何编码中休息了很长时间(比如5年),所以现在当我回来做一些代码以获得乐趣和我自己的使用时,我感到完全迷失了方向,尤其是我实际上从未在电子表格中编写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参加任何课程 这次我在研究AppendRow函数。我的部分代码只需要颠倒一张工作表中的行顺序,然后将其粘贴到另一张工作表中。排序在这种特殊情况下不起作用,我可以使用CopyTo从第一个的底部开始,然后从第二个的顶部开始复制。相反,我想在循环中使用第二个工作表中的AppendRow,该循环从第一个工

我从任何编码中休息了很长时间(比如5年),所以现在当我回来做一些代码以获得乐趣和我自己的使用时,我感到完全迷失了方向,尤其是我实际上从未在电子表格中编写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参加任何课程

这次我在研究AppendRow函数。我的部分代码只需要颠倒一张工作表中的行顺序,然后将其粘贴到另一张工作表中。排序在这种特殊情况下不起作用,我可以使用CopyTo从第一个的底部开始,然后从第二个的顶部开始复制。相反,我想在循环中使用第二个工作表中的AppendRow,该循环从第一个工作表的底部行开始

这是我的问题。如何使用AppendRow复制内容。我搜索了几个小时,只找到了一种使用硬编码appendrow内容的方法,如:

sheet.appendRow(["a man", "a plan", "panama"]);
我知道appendRow以Object[]]作为参数,但我的技能不足。我试着这样做:

    function SortBankStatement() {
  var ss = SpreadsheetApp.getActive();
  var unsorted_sheet = ss.getSheetByName("RawAcc1");
  var sorted_sheet = ss.getSheetByName("Bank Statement History");
  var unsorted_length = unsorted_sheet.getLastRow();
  var unsorted_width = unsorted_sheet.getLastColumn();
  var unsorted = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width);
  for (var i=unsorted_length;
       i>1;
       i--) {
    sorted_sheet.appendRow(unsorted[i][0]); //don't work
    sorted_sheet.appendRow([unsorted[1][i]]); //don't work
    sorted_sheet.appendRow([unsorted]); //don't work
    sorted_sheet.appendRow([unsorted[i]]); //don't work
    sorted_sheet.appendRow(unsorted.getValue(i)); //don't work
    sorted_sheet.appendRow(unsorted(please.work)); //surprisingly, don't work

  };
};
基本上,我不知道如何使用“I”作为源代码的行指示符来追加行。不知道该怎么拼写。我得到的只是关于appendRow是一个字符串的错误,“1”是未指定的,在一次的情况下,我得到的所有电子表格都填充了“USSpecified”字符串或其他胡言乱语,而不是复制的数据

这段代码不一定是最优的,我会在达到全部功能后再研究它。提前感谢。

需要一行(数组)数据或1D数组。
使用getRange().getValues();范围是一个对象。值是一个数组。循环for:for(var i=unsorted_length;i>1;i--){},第一个索引i=unsorted_length在数组中未定义,最后一个i数为2。因此,还可以按如下方式修改循环:

function SortBankStatement() {
  var ss = SpreadsheetApp.getActive();
  var unsorted_sheet = ss.getSheetByName("RawAcc1");
  var sorted_sheet = ss.getSheetByName("Bank Statement History");
  var unsorted_length = unsorted_sheet.getLastRow();
  var unsorted_width = unsorted_sheet.getLastColumn();
  var unsorted = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width).getValues();
  for (var i=unsorted_length - 1; i>1; i--) {
    sorted_sheet.appendRow(unsorted[i]);
    }
}

表2A1:
=SORT(Sheet1!A1:E50,ROW(A1:A50),0)
这将从下至上订购活页1A1:E50(无任何实际排序)


[Array.reverse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse) var unsortedRng = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width); var unsortedVal = unsortedRng.getValues(); unsortedVal.reverse(); unsortedRng.setValues(unsortedVal); var unsortedRng=unsorted_sheet.getRange(1,1,unsorted_长度,unsorted_宽度); var unsortedVal=unsortedRng.getValues(); 反序();
未排序的设置值(未排序的值) 虽然晚了,但如果在调用
getRange()
之后链接
.getValues()
,以实际获取一个值数组,则某些选项可能会起作用
(正如公认的答案一样)

我喜欢你的第二个解决方案,它使用了
reverse()
。从问题的脚本来看,对于(
for(var i=unsorted_length;i>1;i--){}
,第一个索引是
i=unsorted_length
,在数组中是
未定义的
,最后一个
i
2
。如果这反映了您的答案,那么将(var i=unsorted_length-1;i>1;i--){}
var v=unsortedVal.slice(2).reverse()修改为
for如何;未排序的设定值(v)?如果这是多余的,我很抱歉。Sorthing方法工作得很好,但当我使用这个appendRow代码时,我得到了:找不到appendRow((类))方法。我之所以想使用这种方法,是因为当我可以粘贴原始数据时,它将是接口的一部分,可以使用某些条件进行验证,然后直接添加到排序表的底部,不需要额外检查最后一行之类的内容。@Szymon我已经按照Tanaike的话修改了循环,你现在可以检查吗?@Tanaike谢谢。我理解。请随意直接编辑我的任何帖子。@I'-'非常感谢您,它非常好用!有一天我会分享完成的宏以显示我的进度:)