2016-04-05 50 views
0

我是GAS的新手,我寫了一個腳本來執行價格比較,它基本上獲得產品的價格,存儲它們,並且每天以基於時間觸發檢查價格是否變化,價格變化是否發送電子郵件,如果沒有變化,則不做任何事情。在同一個電子表格的多個工作表上運行基於時間的腳本

所以現在我被卡住了,我想在電子表格中添加更多的工作表,我需要在所有工作表中運行相同的腳本,但是我不知道如何管理它。

據我所知,現在我的腳本運行基於此功能

「變種SS = SpreadsheetApp.getActiveSpreadsheet();」 ,腳本知道這是有效的電子表格,如果我配置基於時間的觸發器,它就像一個魅力,但只適用於第一張表。我很期待通過基於時間的觸發器來運行腳本,並且此腳本在所有工作表中運行

我如何告訴腳本是活動工作表,當我使用打開的文檔時它很清楚是活動工作表,但我不知道腳本運行時如何設置活動工作表。

我已經閱讀了一些文檔,有人建議運行一個循環檢查電子表格中的所有表格,獲取名稱或ID並在所有這些工作表中運行腳本。我剛剛開始使用JavaScript和Gas幾周前,我一直在使用它,但我無法使它工作

我發現了一些人想要做類似的事情,但我真的沒有知道代碼的所有功能,

這裏是一個循環的例子,我發現here我期望這個代碼獲取工作表的名稱並執行一個函數,但我不舒服。

function CheckSheets() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 
    for(var k=0;k<sheets.length;k++) { 
    excute function checkprice??? 
    } 

,這裏是我的腳本,我不知道如果我已經找到了例子有效期爲我的情況

function CheckPrice() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var source1 = ss.getRange("A27:A145"); 
var source2 = ss.getRange("B27:B145"); 
var source3 = ss.getRange("A28:A145").getValues(); 
var source4 = ss.getRange("E28:E145").getValues(); 
var source5 = ss.getRange("E27:E145"); 
var source6 = ss.getRange("A28:A145"); 




if (source6.isBlank()) { 

Browser.msgBox('WAITING FOR DATA !', Browser.Buttons.OK); 
Utilities.sleep(30000); 

} 


if (source5.isBlank()) { 

source1.copyTo(ss.getRange("E27:E145"), {contentsOnly: true}); 
source2.copyTo(ss.getRange("F27:F145"), {contentsOnly: true}); 
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK); 
} 

    var Inspector = false; 
for(var i=0;i<source3.length;i++) 
    { 
    if(source3[i][0].toString() != source4[i][0].toString()) 
    { 
Inspector = true; 
} 
} 

if(Inspector) 
{ 

MailApp.sendEmail("[email protected]",ss.getSheetName() + " HAS ", ss.getSheetName() + " CHANGED "); 

} 
else 
{ 
Browser.msgBox('NOTHING CHANGES !', Browser.Buttons.OK); 
} 
} 

回答

0

這是未經測試,但我認爲它沿着你正在尋找線的對於。

function CheckSheets(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 
    for(var k=0;k<sheets.length;k++) { 
    CheckPrice(sheets[k].getName()); 
    } 
} 

function CheckPrice(sheetName){ 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName(sheetName); 
var source1 = sheet.getRange("A27:A145"); 
var source2 = sheet.getRange("B27:B145"); 
var source3 = sheet.getRange("A28:A145").getValues(); 
var source4 = sheet.getRange("E28:E145").getValues(); 
var source5 = sheet.getRange("E27:E145"); 
var source6 = sheet.getRange("A28:A145"); 




if (source6.isBlank()) { 

Browser.msgBox('WAITING FOR DATA !', Browser.Buttons.OK); 
Utilities.sleep(30000); 

} 


if (source5.isBlank()) { 

source1.copyTo(sheet.getRange("E27:E145"), {contentsOnly: true}); 
source2.copyTo(sheet.getRange("F27:F145"), {contentsOnly: true}); 
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK); 
} 

    var Inspector = false; 
for(var i=0;i<source3.length;i++) 
    { 
    if(source3[i][0].toString() != source4[i][0].toString()) 
    { 
Inspector = true; 
} 
} 
} 
相關問題