2017-09-07 59 views
0

我有一個標題爲07.09.17星期四的日常工作表,裏面有4張表格,我想在單元格A1中添加07.09.17(或工作表的當天)?很顯然,每天都有相應的日期,但在運行備份腳本時,我希望它將單元格A1作爲要輸入到歸檔表單中的日期。除了這個,我還有其他的工作。由於我們提前預訂了一些預訂,所以我不能在我們=現在()或=今天(),因爲我提前3個月,他們不僅在當天訪問,而且還有很多天。但是,備份的一天是工作表的日期。與許多員工,我不希望信任他們做(CTRL +);手動插入每張紙的日期。 謝謝你的幫助。在電子表格中包含工作表標題

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 to archive') 
    .addItem('timeStamp','dataBackup') 
    .addToUi(); 
    } 

function timeStamp() { 
    SpreadsheetApp.getActiveSheet() 
    var sheetNames = ['AM trip', 'PM trip', 'Pool/Beach', 'Night Dive']; 
    .setActiveCell() 
    .setValue(new Date()); 
} 

    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('A1').getValue(); 
    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); 
    var getDate = new Date(getDate); 
    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']]); 
     } 
    } 

    } 
    } 

回答

0

假設你想這在張在同一個電子表格,那麼所有你需要做的就是去A1和進入這個=nameOfSpreadsheet()是的,我知道這是習慣性地大寫所有字母,但我一般逆流而上的海關游泳。如果你願意,你可以利用它們全部。

function nameOfSpreadsheet() 
{ 
    return SpreadsheetApp.getActive().getName(); 
} 

當然,您必須將該函數放入腳本編輯器中的項目中。我將這些自定義函數保存在與其他函數分開的項目中。

我沒有注意去除星期幾,所以我發現這將工作,現在你只是得到日期。

function nameOfSpreadsheet() 
{ 
    var s=SpreadsheetApp.getActive().getName().replace(/(\d{1,2}\.\d{1,2}\.\d{1,2}).*/,'$1'); 
    return s; 
} 

這是在代碼編輯器功能:

enter image description here

,這是它是如何部署:

enter image description here

電子表格的標題是17年9月9日星期六

+0

謝謝你,那裏會我在每日工作表腳本中添加該腳本?我已經用腳本對問題進行了修改,以便澄清。 – Paul

+0

我不知道。這是你的劇本。你想把電子表格的標題放在哪裏? – Cooper

+0

對不起,電子表格中的6張圖中有4張名爲'Sheet 1','Sheet 2','Sheet 3',最後是多張'Sheet 5'中的A1單元格! – Paul

相關問題