更改跟蹤日誌
與跟蹤的問題只需更改時間戳即可進行更改,因爲您只知道給定行的最後更改。所以我建議只寫一條短消息到一個日誌條目,你可以隨時回來閱讀。這將包括時間戳,電子表格名稱,工作表名稱,範圍更改,舊值和新值。您將需要創建一個文件。我使用Drive Notepad創建文件,並將所有這些類型的文件放在一個數據文件夾中,您將需要數據文件夾的ID。您還需要電子表格的ID和希望記錄編輯的工作表的名稱。
您需要爲onEditLog函數創建onEdit觸發器。
驗證碼:
function onEditLog(e)
{
var ss=e.source.openById('SpreadsheetId');
var docnam=ss.getname();
var shtnam=ss.getActiveSheet().getName();
var range=e.range.getA1Notation();
if(docnam=='Your Document Name' && shtnam=='Sheet1')
{
var msg= 'Spreadsheet: ' + docnam + ' Sheet: ' + shtnam + + 'Range: ' + range + ' has been changed from ' + e.oldvalue + ' to ' + e.value;
logEntry1(msg,'filename');
}
}
function logEntry1(entry,file)//not you cannot run this function like other functions from your script editor. It must be run from an onEdit trigger so that it has access to the event object.
{
var file = (typeof(file) != 'undefined')?file:'eventlog.txt';
var entry = (typeof(entry) != 'undefined')?entry:'No entry string provided.';
if(entry)
{
var ts = Utilities.formatDate(new Date(), "GMT-6", "yyyy-MM-dd' 'hh:mm:ss a");
var s = ts + ' - ' + entry + '\n';
saveFile(s, file, true);
}
}
//this function is taken from myUtility library you'll need to add your own DefaultFileName and DataFolderID.
function saveFile(datstr,filename,append)
{
var append = (typeof(append) !== 'undefined')? append : false;
var filename = (typeof(filename) !== 'undefined')? filename : DefaultFileName;//make change here. It is a string so put quotes around it.
var datstr = (typeof(datstr) !== 'undefined')? datstr : '';
var folderID = (typeof(folderID) !== 'undefined')? folderID : DataFolderID;//make other change here. Again it is a string
var fldr = DriveApp.getFolderById(folderID);
var file = fldr.getFilesByName(filename);
var targetFound = false;
while(file.hasNext())
{
var fi = file.next();
var target = fi.getName();
if(target == filename)
{
if(append)
{
datstr = fi.getBlob().getDataAsString() + datstr;
}
targetFound = true;
fi.setContent(datstr);
}
}
if(!targetFound)
{
var create = fldr.createFile(filename, datstr);
if(create)
{
targetFound = true;
}
}
return targetFound;
}
看看這個[鏈接](https://sites.google.com/site/appsscripttutorial/urlfetch-and-oauth/get-the-revision-history-對的一資源使用,已超出DocsList-API)。 – Cooper
@pnuts你會有其他建議嗎?我在這裏不是一個有經驗的開發人員。 –
@cooper謝謝!這很有幫助 –