2016-04-05 13 views
0

GAS'a yeni geldim, temel olarak bir ürünün fiyatını almasını, depolamasını ve her gün bir zamana göre fiyat karşılaştırması gerçekleştirmek için bir komut dosyası yazdım. Bu fiyat değiştiğinde tetikleme, eğer fiyat değişiklikleri bir e-posta gönderirse, hiçbir şey değişmezse hiçbir değişiklik yapmaz., aynı elektronik tablodaki birden çok sayfaya zaman tabanlı bir komut dosyası çalıştırıyor

Şu an sıkışmış durumdayım, e-tabloya daha fazla sayfa eklemek istiyorum, aynı betiğin tüm sayfalarda çalışmasına gerek var, ancak nasıl yönetileceğini bilmiyorum.

Bildiğim kadarıyla ben, şimdi benim komut dosyası ile bu özellik dayalı çalışır bildiği gibi

"var ss = SpreadsheetApp.getActiveSpreadsheet();" betik, aktif bir elektronik tablo olduğunu bilir, eğer zamana bağlı bir tetikleyici yapılandırırsam çekicilik gibi çalışır, ancak sadece ilk sayfa ile çalışır. Komut dosyasını bir zaman tabanlı tetikleyici ile çalıştırmak için bir yol arıyorum ve bu komut dosyası tüm sayfalarda çalışmaktadır

Komut dosyasını etkin sayfadan nasıl anlatabilirim, açık belgeyle çalışırken açık etkin sayfadır, ancak komut dosyası çalışırken etkin sayfayı nasıl ayarlayamıyorum.

Bazı belgeleri okudum ve bazı kişiler elektronik sayfadaki tüm sayfaları kontrol eden, adları veya kimliği almayı ve tüm bu sayfalarda komut dosyasını çalıştıran bir döngü çalıştırmayı önerir. Sadece birkaç hafta önce javascript ve Gas ile başladım ve onunla çalışıyorum ama bunu yapamamıştım

Benzer bir şey yapmak isteyen insanlardan bazı örnekler buldum ama gerçekten

Tüm işlevlerini biliyorum here'u bulduğum bir döngü örneği bu kodun sayfaların adlarını almasını ve bir işlevi tetiklemesini beklemiyorum, ama bir şey yapmıyorum.

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

ve burada i bulduk örnek durumumdan

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); 
} 
} 

cevap

0

Bu denenmemiş olduğu için geçerli olup olmadığını bilmiyorum, benim senaryom, ama sen aradığınız çizgisinde olduğunu düşünüyorum için.

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; 
} 
} 
} 
İlgili konular