我有一个功能,我从网上获得,稍作修改为我自己使用。我无法工作的是如何删除整行,并只复制下面函数中的特定行。如何复制功能内的特定行而不是全行
我希望能够将变量传递给每个工作表的功能以及其相应的列进行复制。
ex。 moveCompletedRows(类型,whereToMoveType,[细胞的移动]){}
function moveCompletedRows(type,whereToMoveType) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('SortBot');
var targetSheet = ss.getSheetByName(whereToMoveType);
var val = sheet.getDataRange().getValues();
var headers = val.shift();
var arr = [], rowsToWriteBack = [];
rowsToWriteBack.push(headers);
val.forEach(function (r, i) {
r[1] == type ? arr.push(r) : rowsToWriteBack.push(r)
});
if (arr.length > 0) {
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, arr.length, arr[0].length)
.setValues(arr);
sheet.clear();
sheet.getRange(1, 1, rowsToWriteBack.length, rowsToWriteBack[0].length)
.clear()
.setValues(rowsToWriteBack);
}
}
除了: 我的当前设置需要改变是因为我的形式是如此之大(多部分形式)的原因提出了很多列的(A -CH),并且每个条目仅提交大约8个(仅在不同列中),即使隐藏了列,当我在移动设备上查看页面时,它会冻结/崩溃50%的时间(我不确定这会完全解决因为具有许多行的工作表仍将位于该主工作表上,请注意它将为空)。这让我质疑,如果在移动设备上从未查看过那么多单元格的表单会导致表单加载非常慢?
感谢
编辑:
链接到包含窗体/张的云端硬盘文件夹/脚本
https://drive.google.com/folderview?id=0B-7N8A7FPKw5V20yRVFQcmNZTlk&usp=sharing
EDIT2:
一直在努力工作在这最后几个天,我有一个二次脚本我有半的工作,但部分下面标注是我想要的原配方中有工作
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet2Copy = ss.getSheetByName('Actions');
var targetSheet = ss.getSheetByName('Test');
var data = sheet2Copy.getRange(1,1, sheet2Copy.getLastRow(), sheet2Copy.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++) {
Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
if (data[i][1] == "Action") {
var rowsToWriteBack = []; // initialise intermediate array
// GET THIS WORKING IN ABOVE FORMULA
// Trying to select columns to put into new sheet. Will eventually make the #'s variables passed into the formula to make it dynamic
rowsToWriteBack.push(
data[i][0],
data[i][1],
data[i][2],
data[i][10],
data[i][11],
data[i][12],
data[i][13]
);// choose here the columns you want to add
dest.push(rowsToWriteBack);
}
} // here is the end of the for loop
Logger.log(dest) ; // log the dest array instead
if (dest.length > 0) { // if something has been written in your array then batch write it to the dest. sheet
targetSheet.getRange(targetSheet.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
我不是你完全清楚试图做的是你试图提取只填充行中的列或仅包含值的范围的列?所需输入和输出的屏幕截图会有所帮助。 –
这个脚本不会真的有帮助。它会对电子表格进行排序,以查看第二列是否与某个文本/编号(第一个参数“type”)相对应。 –
@RobinGertenbach我有一个非常大的表格,根据第一个问题被分成许多部分。表单的所有响应都转到表单SortBot中,将它们排列到适当的表单选项卡中。问题是我的函数上面copys在行中的所有单元格(我需要告诉它type = inventory只复制列x,y,z。我试图将列集分成不同的工作表,没有所有的额外列,因为它会导致Android上的大规模滞后和冻结。请注意,有些列将是空的,因为它们将在发送响应之后填充 – Davey