2014年10月13日 星期一

Triggers

如果有其他的需求,譬如希望我們開啟檔案時自動做一些事,編輯檔案時自動做一些事?

Google Apps Script支援一些trigger :

onOpen():
開啟檔案時會被喚起,是"任何檔案"喔。如果要知道目前被開起來的檔案資訊,只能call:
var sheet = SpreadsheetApp.getActiveSpreadsheet();
就是取得現在出現在螢幕上的這個sheet.
對重新整理也會有反應。

例如:
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'onOpen']);
}
會在開啟的檔案後面加一行文字

onEdit(),onEdit(e):
在檔案被編輯時被喚起。
加上參數e的話,目前被編輯的檔案資訊會被放在e裡面。
例如:

function onEdit(e) {
  
  var sheet = e.source;
  var sname1 = sheet.getName();
  var sname2 = sheet.getSheetName();
  var surl = sheet.getUrl();
 // Logger.log('changed: '+surl+' : ' + sname1 + ' : ' + sname2 + ' : ' + new Date() );
  sheet.appendRow(['changed: '+surl+' : ' + sname1 + ' : ' + sname2 + ' : ' + new Date()] );
  
}

一樣會在被編輯的檔案後面加文字

設定Trigger有兩種方式,一種是直接對function取被保留的名稱:onOpen(), onEdit()等等,則會自行啟動。或者可以在Resource->Current project;s triggers/All triggers裡設定。
功能上沒有明顯差異,但測試後,我感覺到用前者的方式程式執行比較快速。
一次設定多個trigger也是可能的,譬如我多設定了一個onEdit2(e),設成onEdit條件的trigger,則onEdit(e)和onEdit2(e)會一起執行。先後次序如何我就沒有測試了。

沒有留言:

張貼留言