[英]Google Sheets Scripts onOpen(e) Add New Row to Sheet
我有一個自定義函數,可以在工作表中的最后一個非空行下插入新行,並將特定范圍復制到該新行。 當我使用自定義菜單項觸發它時,此功能可以正常工作。
但是,當我將此自定義函數添加到onOpen(e)觸發器時,腳本不起作用。 我對功能進行了故障排除並添加了警報-警報會觸發,因此可以在正確的位置讀取該功能。
請告知我的腳本如何在OpenOpen上運行?
這是我的自定義函數的代碼:
function onOpen(e) {
autoAddRow();
}
function autoAddRow() {
var updateFrequency = 3;
var lRow = getLastRow('A');
var lDate = all.getRange(lRow,1).getValue();
var today = new Date();
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
var newDate = lDate.addDays(updateFrequency);
if (today >= newDate) {
var lCol = all.getLastColumn();
var src = all.getRange(3,1,1,6);
var dest = all.getRange(lRow+1,1,1,6);
if(lRow > 20) {
all.insertRowsAfter(lRow, 1);
}
src.copyTo(dest, {contentsOnly:false});
} else {
return;
}
}
因此,如果您的示例不是偽代碼,它將無法正常工作。 它死在函數的第二行,因為該方法未附加到類。
這是我的代碼版本(我正在使用電子表格應用程序中的第一張紙)。
function autoAddRow() {
var updateFrequency = 3
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange();
var lRow = data.getLastRow();
var lDate = new Date(sheet.getRange(lRow,1).getValue());
var today = new Date();
Logger.log(lDate);
Logger.log(lRow);
Logger.log(sheet.getRange(lRow,1).getValue());
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
var newDate = lDate.addDays(updateFrequency);
if (today >= newDate) {
Logger.log("passed if statement");
var lCol = data.getLastColumn();
var src = sheet.getRange(lRow,1,1,6);
var dest = sheet.getRange(lRow+1,1,1,6);
if(lRow > 20) {
all.insertRowsAfter(lRow, 1);
}
src.copyTo(dest, {contentsOnly:false});
} else {
return;
}
}
主要問題在於調用范圍和數據。 他們什么都沒去。 需要將變量lDate解析為日期(在我的版本中,我的日期列是第二列,而不是第一列* edit:將代碼快速更改為指向原始日期單元格* end edit),但是您必須調用范圍並獲得解析的值,但是在解決了有關獲取數據的類問題之后,其余的就到位了。 如果您放入onOpen,它甚至可以工作。
更新:我沒有解決這個問題
if(lRow > 20) {
all.insertRowsAfter(lRow, 1);
}
實際上,我不太確定它的作用,因為看起來它只是在最后一行之后插入了該行,其余的功能都這樣做了。 但是代碼“原樣”將在20行后中斷,除非您更改“全部”以引用工作表對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.