0%

Google Sheets Automatic Backups

1. 前言

目前專案階段已經進入到軟體功能驗收階段,在進行驗收時需要將問題一一的列出來。

為了溝通與協同作業方便,於是選用了google sheets 進行分享。但後續想想,如果哪天一不小心出現了傻瓜或者其它意外,這份資料就不見了…

於是開始研究如何自動備份google sheets 資料。以下是問題管制表

image-20210930203829852

2. 流程說明

2.1. 建立新資料夾

比方說在問題管制表底下建立個一名稱為Backups資料夾,接著點擊到Backups這一層,我們要取出紅色線條部份的ID字串,這個屬於資料夾ID,待會會用到。

image-20210930203614781

2.2. 指令碼編輯器

到你要備份的對象sheet 打開,接著找到工具指令碼編輯器 ,點擊它到下一步驟畫面

image-20210930200414943

2.3. 貼上程式碼

接著會看到右邊有程式碼可以貼,請貼上以下程式碼,這個畫面是貼完之後的結果。

重點在第10行 code

1
DriveAPP.getFolderById('your backup bolder id')

有注意到嗎?其實就是要貼上剛剛在建立資料夾步驟要留意的資料夾ID,請貼到這裡。

之後請記得按下儲存,長的像磁片正方形的那個。

image-20210930200620937

2.4. 程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function makeCopy() {

// generates the timestamp and stores in variable formattedDate as year-month-date hour-minute-second
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss");

// gets the name of the original file and appends the word "copy" followed by the timestamp stored in formattedDate
var name = SpreadsheetApp.getActiveSpreadsheet().getName() + " Copy " + formattedDate;

// gets the destination folder by their ID. REPLACE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx with your folder's ID that you can get by opening the folder in Google Drive and checking the URL in the browser's address bar
var destination = DriveApp.getFolderById("your backup folder name");

// gets the current Google Sheet file
var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())

// makes copy of "file" with "name" at the "destination"
file.makeCopy(name, destination);
}

2.5. 設定觸發條件

左邊選單有一個小時鐘的就是我們的主角,要設定時間備份,就是在這裡

image-20210930201927739

2.6. 選擇時間驅動

因為我的目的是想要定時備份,所以這次是選時間驅動的選項

image-20210930202210516

2.7. 定時顆粒度

image-20210930202310015

2.8. 最後完成的設定

設定完之後,按下儲存

image-20210930202358258

2.9. 觸發條件清單

按下儲存後,這時候畫面會直接導向到這個清單,紅色部分就是我們剛剛設定的。

眼針的我們可以發現它多了一個觸發器,這個觸發器是設定在文件開啟時

後來實測只要使用者有去開啟這個sheet,就會自動備一份,這也是不錯的備份方式,所以我就沒有刪掉它。

image-20210930202803058

3. 最後完成

完成囉,在這個備份的資料夾,時間一到就會多一份囉。

image-20210930203214080