10

Her 30 dakikadan sonra tetikleyen bir işlev oluşturdum ve bazı parametreleri geçmek istiyorum. CarHistory'i döndüren bir kitaplığım ve e-tabloyu kitaplık işlevini aradığım yerden aldım.Parametre (ler) kütüphane komut dosyasında zamanlamalı tetikleme işlevine nasıl aktarılır

Library1.gs tablomda

function carHistory(number,maker) 
{ 
// code logic 
} 

function startEvery30mins_CarHistory(number,maker) 
{ 
    //This function works 
    carHistory(number,maker); 

    // how to trigger this with parameter. 
    ScriptApp.newTrigger("carHistory") 
    .timeBased() 
    .everyMinutes(30) 
    .create(); 
} 

Code.gs:

function startOnce(){ 
    Library1.carHistory("US-xxx","Honda"); 
} 

function startEvery30mins(){ 
    Library1.startEvery30mins_CarHistory("US-xxx","Honda"); 
} 

EDITED:

Code.gs: Ben PropertiesService kullanarak çalıştı, ancak yine de

function startOnce(){ 
    var uProps = PropertiesService.getUserProperties(); 
    uProps.setProperty('Maker', 'Honda'); 
    uProps.setProperty('Number', 'US-xxx'); 

    Library1.carHistory(); 
} 

Kütüphane çalışmıyor:

function carHistory() 
    { 
     // Fetch Parametr 
     var getProps=PropertiesService.getUserProperties(); 
     var c_Maker= getProps.getProperty('Maker'); 
     var c_Number=getProps.getProperty('Number'); 
     // code logic 

    } 

function startEvery30mins_CarHistory() 
{ 
     ScriptApp.newTrigger("carHistory") 
     .timeBased() 
     .everyMinutes(30) 
     .create(); 
} 
+0

komut dosyası özelliklerini kullanarak denediniz kullanıcı özellikleri yerine? https://developers.google.com/apps-script/reference/properties/properties-service#getScriptProperties() – Gerardo

+0

evet Hem getScriptProperties() hem de getUserProperties() işlevlerini denedim ve her ikisi de library.js –

cevap

6

Pr operties, paylaşılmayan bir kaynaktır; her komut dosyasının, diğer komut dosyalarıyla paylaşılmayan kendi Özellikleri grubu vardır. Bu davranış, Resource Scoping'da açıklandığı gibi bir Kitaplıktaki özellikleri nasıl kullanabileceğinizi etkiler.

Paylaşılmayan bir kaynak, her iki kitaplığın ve içerme komut dosyasının yalnızca kendi kaynak örnekleri için yerleşik erişime sahip olduğu anlamına gelir. Bununla birlikte, bir kütüphane, paylaşılmayan kaynaklara, üzerinde çalışan açık işlevler kullanarak erişebilir.

Diğer bir deyişle; kütüphanesinin paylaşılmayan özellikleri, kitaplık işlevleri ile ana betiğine ana komut dosyasına maruz kalabilir.

/** 
* Set name,value pairs of parameters for library function. 
* 
* @param {Object} parameters Object with named properties to be 
*        used as library function parameters. 
*/ 
function setParameters(parameters) { 
    var props = PropertiesService.getUserProperties(); 
    for (var key in parameters) { 
    var value = parameters[key]; 
    props.setProperty(key, value); 
    } 
} 

Böyle kullanmak istiyorum:

Bu fonksiyon sizin kütüphane tetik fonksiyonu için çalışma parametrelerini ayarlamak için kullanılabilir

function startOnce(){ 
    var uProps = { 
    'Maker':'Honda', 
    'Number':'US-xxx' 
    }); 

    Library1.setParameters(uProps); 
    Library1.carHistory(); 
} 
+0

'da çalışmıyor Cevabınız için teşekkürler, bu nedenle temel olarak her bir komutun kendine ait bir özelliği vardır, ancak parametre gönderebilir ve bunları alabilir ve PropertiesService olarak ayarlayabiliriz. her kütüphanenin kendi PropertiesService'si var ve onlarla aynı değerleri belirledik –

İlgili konular