[英]Moving rows from multiple sheets with checkbox and script to one sheet
在這個偉大社區的幫助下,我制作了一個腳本,我可以通過單擊 A 列中的復選框將一行移動到另一個工作表。 使用一個腳本將文本從一行中的單元格復制到另一個工作表中
我需要更多具有此復選框功能的工作表。 即Ark2、Ark3等。 所有人都應該將行中的數據移動到“Sick”表而不覆蓋現有數據。
從我現有的腳本中,只有一張“Ark1”工作表正在運行,如果我只是復制腳本並替換工作表上的名稱,我相信它會在“Sick”表中覆蓋。
這是我正在使用的腳本。
function main(row) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Ark1');
var [v, d] = s.getRange(`B${row}:C${row}`).getValues()[0];
var s2 = ss.getSheetByName('Sick');
var timeZone = ss.getSpreadsheetTimeZone();
var t = Utilities.formatDate(new Date(), timeZone, 'HH:mm:ss dd-MM-yyyy');
s2.getRange(`A${row}:C${row}`).setValues([[t,v,d]]);
}
function onEdit(e) {
const range = e.range;
if (range.getSheet().getSheetName() == "Ark1" && e.value == "TRUE") {
main(range.rowStart);
range.uncheck();
}
}
可以在此處找到我的工作表的可編輯測試版本: https : //docs.google.com/spreadsheets/d/1z5TGWp3N002z0GNts4NRyspkjXcsN52rxPtx8Pu9D70/edit#gid=1278602995
正如你所知道的,我是這里的新手 - 但正在慢慢進步......
您需要獲取編輯過的 Sheet 的名稱而不是指定“Ark1”,並使用getLastRow()
方法將其添加到“Sick”表的底部。
function main(range) {
var row = range.rowStart;
var s = range.getSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var [v, d] = s.getRange(`B${row}:C${row}`).getValues()[0];
var s2 = ss.getSheetByName('Sick');
var timeZone = ss.getSpreadsheetTimeZone();
var t = Utilities.formatDate(new Date(), timeZone, 'HH:mm:ss dd-MM-yyyy');
s2.getRange(`A${s2.getLastRow() + 1}:C${s2.getLastRow() + 1}`).setValues([[t,v,d]]);
}
function onEdit(e) {
const range = e.range;
if (range.getSheet().getSheetName() != "Sick" && e.value == "TRUE") {
main(range);
range.uncheck();
}
}
我希望這對你有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.