4

如果我有Google Spreadsheet例如獲取機器可讀格式中從Google電子表格變更通知更改的單元格細節

https://docs.google.com/spreadsheet/ccc?key=0AjAdgux-AqYvdE01Ni1pSTJuZm5YVkJIbl9hZ21PN2c&usp=sharing

而且我已經建立了它通知給我發電子郵件立即每當細胞的變化。

然後我通過電子表格API對該電子表格進行更改 - 即不是手動更改。

然後我收到一封電子郵件這樣的:

主題:「通知測試」被編輯最近

請參閱您的谷歌文檔「通知測試」的變化:點擊 這裏

其他人自10/01/2014 12:23至12:23進行更改(格林威治 平均時間)

  • 價值觀改變

如果我打開了「點擊這裏」鏈接,然後我得到這個URL這讓我發現,在電子表格中,改變了細胞:

https://docs.google.com/a/DOMAINGOESHERE/spreadsheet/ver?key=tn9EJJrk6KnJrAEFaHI8E3w&t=1389356641198000&pt=1389356621198000&diffWidget=true&s=AJVazbUOm5tHikrxX-bQ0oK_XEapjEUb-g

我的問題是:

有沒有辦法以編程方式獲得關於哪個單元格發生了變化的信息 - 例如JSON?

我已經通過谷歌電子表格API看: https://developers.google.com/google-apps/spreadsheets/

,並在驅動器API修訂: https://developers.google.com/drive/manage-revisions

我自己也嘗試設置使用谷歌Apps腳本的onEdit()事件:https://developers.google.com/apps-script/understanding_triggers

我認爲這最後的方法將是答案。

這種方法的問題在於,雖然onEdit可用於通過電子郵件發送有關更改的詳細信息,但只有在手動編輯電子表格時纔會觸發,而通過電子表格API以編程方式更新。

任何想法?

+0

無法提取數據,請參見http://stackoverflow.com/questions/15079715/how-to-get-only-recalculated-細胞從谷歌電子表格通過谷歌擴展 – eddyparkinson

回答

4

您可以構建一個檢查更改的函數。一種方法是通過比較同一電子表格的多個實例。如果有差異,你可以發郵件給自己。使用時間觸發器,您可以檢查每分鐘,每小時,每天或每週(取決於您的需求)。

var sheet = **whatever**;//The spreadsheet where you will be making changes 
var range = **whatever**;//The range that you will be checking for changes 
var compSheet = **whatever**;//The sheet that you will compare with for changes 
function checkMatch(){ 
    var myCurrent = sheet.getRange(range).getValues(); 
    var myComparison = compSheet.getRange(range).getvalues(); 
    if(myCurrent == myComparison){//Checks to see if there are any differences 
    for(i=0;i<compSheet.length;++i){ //Since getValues returns a 'multi-dimensional' array, 2 for loops are used to compare each element 
    for(j=0;j<compSheet[i].length;++i){ 
     if(myCurrent[i][j] != myComparison[i][j]){//Determines if there is a difference; 
     //***Whatever you want to do with the differences, put them here*** 
    } 
    } 

    myEmailer(sheet.getUrl());//Passes the url of sheet to youur emailer function 
    compSheet.getRange(range).setValues(myCurrent);//Updates compSheet so that next time is can check for the next series of changes 
    } 
    } 

然後從資源>當前項目的觸發器可以設置checkMatch爲每分鐘運行。

還檢查了https://developers.google.com/gdata/samples/spreadsheet_sample經由GDATA風格谷歌電子表格的API爲JSON

+0

橫向思維。我喜歡它。這是一個非常有創意的解決方案。會給它一個旋風,讓你知道我如何得到。 –

相關問題