2017-07-19 31 views
1

我是Google Scripting的新手,我需要一些幫助,因爲我一直在搜索和修補,但無濟於事。我所擁有的是一個包含12列數據和越來越多行的谷歌表。我想要做的就是發送一封郵件給我,如果其中一列(K列)的值比之前的值改變了10%以上。此外,我希望電子郵件中包含來自列A:D(即本產品已更改超過10%)數據的更改,其中包括與問題表單的鏈接(始終是相同的片)。如果列中的值按x%(發送數據範圍)更改,則觸發器電子郵件

我不確定是否有可能擁有此日誌,並且每小時(或自定義)執行一次電子郵件更新,而不是立即執行。如果沒有改變,電子郵件會說「沒有改變」。

我知道我在尋求很多東西,但我真的很想幫助,即使你告訴我其他的例子讓我接近我所要求的。提前致謝。對此,我真的非常感激。

回答

1

白色Google表格允許您查看工作表的修訂歷史記錄,但沒有看到用於檢索過去修訂的API函數。因此,我認爲你需要設計一個解決方案來保存你想要比較的值。您可以將這些值保存到另一個Google表格,也可以將每個值保存到指定的腳本屬性中。電子表格的最終大小將決定最佳方法。

您將需要創建一個腳本函數,並使其每小時運行一次定時觸發器。該腳本將獲取一系列值

//Grab 10 rows from column K 
var vals = SpreadsheetApp.getActiveSheet().getRange(1, 11, 10, 1); 

保存這些值(用於下次執行)。在這個例子中,行號被用作屬性對象的關鍵字。您可能希望改用其他列中的值。

var docProp = PropertiesService.getDocumentProperties(); 
for(var i=0; i<vals.length; i++) { 
    docProp.setProperty(i, vals[i][0]); 
} 

要執行新值與先前值的比較,只需比較docProp中保存值之前的值即可。

var docProp = PropertiesService.getDocumentProperties(); 
for(var i=0; i<vals.length; i++) { 
    var old = docProp.getProperty(i); 
    //perform your comparison here. Take action if value changes by more than 10% 
    Logger.log("Old "+old+"; New "+vals[i][0]); 
    docProp.setProperty(i, vals[i][0]); 
} 
相關問題