Google apps script 如何使用AppendRow
我从任何编码中休息了很长时间(比如5年),所以现在当我回来做一些代码以获得乐趣和我自己的使用时,我感到完全迷失了方向,尤其是我实际上从未在电子表格中编写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参加任何课程 这次我在研究AppendRow函数。我的部分代码只需要颠倒一张工作表中的行顺序,然后将其粘贴到另一张工作表中。排序在这种特殊情况下不起作用,我可以使用CopyTo从第一个的底部开始,然后从第二个的顶部开始复制。相反,我想在循环中使用第二个工作表中的AppendRow,该循环从第一个工作表的底部行开始 这是我的问题。如何使用AppendRow复制内容。我搜索了几个小时,只找到了一种使用硬编码appendrow内容的方法,如:Google apps script 如何使用AppendRow,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我从任何编码中休息了很长时间(比如5年),所以现在当我回来做一些代码以获得乐趣和我自己的使用时,我感到完全迷失了方向,尤其是我实际上从未在电子表格中编写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参加任何课程 这次我在研究AppendRow函数。我的部分代码只需要颠倒一张工作表中的行顺序,然后将其粘贴到另一张工作表中。排序在这种特殊情况下不起作用,我可以使用CopyTo从第一个的底部开始,然后从第二个的顶部开始复制。相反,我想在循环中使用第二个工作表中的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'-'非常感谢您,它非常好用!有一天我会分享完成的宏以显示我的进度:)