我需要將一行中的所有資料(包括公式和格式)復制到另一個選項卡(勾選復選框時),然后我想清除源作業表上該行的內容,但保留所有公式。我正在研究 Google 表格應用腳本。
我一直在使用 range.getFormulas() 和 range.setFormulas() 但我無法讓它作業。
這是我擁有的當前腳本,它清除了所有內容。所以我希望以此為基礎。
這里是表格副本的可編輯鏈接: https ://docs.google.com/spreadsheets/d/1vUjLrkwuhat28lInKDvCwJgY5BH6U85JDl_U61eeC2A/edit?usp=sharing
function onEdit(event) {
// assumes source data in sheet named Day to Day
// target sheet of move to named Total TO/YO
// getColumn with check-boxes is currently set to colu 36 or AJ
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Day to Day" && r.getColumn() == 36 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Total TO/YO");
var target = targetSheet.getRange(targetSheet.getLastRow() 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.getRange(row, 1, 1, numColumns).clearContent();
}
}
提前感謝您為我提供的任何幫助!
uj5u.com熱心網友回復:
如果沒有觸發器提供的事件物件,這將無法運行
function onEdit(e) {
//e.source.toast('Entry')
var sh = e.range.getSheet();
if (sh.getName() == "Day to Day" && e.range.columnStart == 36 && e.value == "TRUE") {
var numColumns = sh.getLastColumn();
var tsh = e.source.getSheetByName("Total TO/YO");
var trg = tsh.getRange(tsh.getLastRow() 1, 1);
sh.getRange(e.range.rowStart, 1, 1, numColumns).copyTo(trg);
sh.getRange(e.range.rowStart, 1, 1, numColumns).getFormulas().flat().forEach((f, i) => {
if (!f) {
sh.getRange(e.range.rowStart, i 1).setValue('')
}
})
}
}
如果您收到錯誤TypeError: Cannot read property 'range' of undefined,可能是因為您從腳本編輯器運行它而沒有提供事件物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473281.html
標籤:谷歌应用脚本
上一篇:計算另一個谷歌表格中的最大行數
