我有一個功能,我從網上獲得,稍作修改爲我自己使用。我無法工作的是如何刪除整行,並只複製下面函數中的特定行。如何複製功能內的特定行而不是全行
我希望能夠將變量傳遞給每個工作表的功能以及其相應的列進行復制。
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