0
我有以下腳本需要在相關日子結束時運行,我試圖讓它在計時器上運行,我無法解決它。我有5張用於安排工作人員的一天的不同部分。在一天結束的時候,我需要將它發送到一張可以工作幾個小時並執行各種任務的主表。我的問題是: - 1)我有一張空白的Google工作表,裏面有5張紙+ 1張隱藏紙。這需要在其名稱的當天發送給主副本,如果可能的話自動發送。 2)他們可以提前3個月製作,不希望每天發送空白備份。 3)當我按任何新創建的工作表上的「備份」按鈕,我必須授權腳本。腳本不一致運行
有什麼辦法可以不必在新電子表格上授權腳本。有沒有人有更好的想法實現自動化?
function onOpen() { // This function adds a custom menu to the spreadsheet (Backup to archive) so you can run the script from there.
var ui = SpreadsheetApp.getUi();
ui.createMenu('Backup')
.addItem('Backup','dataBackup')
.addItem('Name','nameOfSpreadsheet')
.addToUi();
}
function nameOfSpreadsheet() {
var s=SpreadsheetApp.getActive().getName().replace(/(\d{1,2}\.\d{1,2}\.\d{1,2}).*/,'$1');
return s;
}
function dataBackup() {
var inputSS = SpreadsheetApp.getActiveSpreadsheet();
var archiveSS = SpreadsheetApp.openById('146WU8RghfFqlCpCSX7n6kBAKOyxcpVKt14yhVfvYz-g');
var user = Session.getActiveUser().getEmail();
var sheetNames = ['AM trip', 'PM trip', 'Pool/Beach', 'Night Dive'];
for (var i = 0; i < sheetNames.length; i++) {
var inputSheet = inputSS.getSheetByName(sheetNames[i]);
var archiveSheet = archiveSS.getSheetByName(sheetNames[i]);
var date = inputSheet.getRange('A2').getValue(); // Changed to stop inadvertent cell changes, also made text white so not seen.
var data = inputSheet.getRange('E7:U37').getValues().filter(function(row) { return row[0] !== '' || row[1] !== ''});
for (var x = 0; x < data.length; x++) {
data[x].splice(0, 0, date);
}
var getDate = archiveSheet.getRange(archiveSheet.getLastRow(), 1).getValue();
var maxRowLength = data.reduce(function(length, row) { return Math.max(length, row.length); }, 0);
var date = new Date(date);
if (date.getDate() === "Loading Data...") {
Utilities.sleep(10000);
SpreadsheetApp.flush();
if (getDate.getDate() != date.getDate() || getDate.getMonth() != date.getMonth()) {
if (data.length != 0) {
archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), data.length);
archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, data.length, maxRowLength).setValues(data);
} else {
archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), 1);
archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, 1, 2).setValues([[date, 'No Data']]);
}}}}}
Thanks @cooper,我刪除了菜單中的電子表格名稱。是我認爲會起作用的其他東西,但沒有。感謝您的重寫將複製並檢查它,然後再回到你身邊。得到這個錯誤。有任何想法嗎? TypeError:無法從undefined讀取屬性「0」。 (行31,文件「更新備份數據」)這是行31「if(dataA [j] [0] && dataA [j] [1]) 」 – Paul