Class ScriptApp

ScriptApp

Komut dosyası yayınlama ve tetikleyicilere erişme ve bunları değiştirme. Bu sınıf, kullanıcıların komut dosyası tetikleyicileri oluşturmasına ve komut dosyasının hizmet olarak yayınlanmasını kontrol etmesine olanak tanır.

Özellikler

MülkTürAçıklama
AuthModeAuthModeApps Komut Dosyası'nın tetiklenen bir işlev aracılığıyla hangi yetkili hizmet kategorilerini yürütebileceğini tanımlayan bir sıralama.
AuthorizationStatusAuthorizationStatusBir komut dosyasının yetkilendirme durumunu gösteren bir numaralandırma.
EventTypeEventTypeTetiklenen etkinliğin türünü belirten bir sıralama.
InstallationSourceInstallationSourceKomut dosyasının kullanıcıya eklenti olarak nasıl yüklendiğini belirten bir sıralama.
TriggerSourceTriggerSourceTetikleyicinin etkinleştirilmesine neden olan etkinliğin kaynağını belirten bir sıralama.
WeekDayWeekdayHaftanın günlerini temsil eden bir sıralama.

Yöntemler

YöntemDönüş türüKısa açıklama
deleteTrigger(trigger)voidBelirtilen tetikleyiciyi kaldırarak artık çalışmamasını sağlar.
getAuthorizationInfo(authMode)AuthorizationInfoKullanıcının tüm komut dosyası gereksinimleri için yetkilendirme verip vermediğini kontrol eden bir nesne alır.
getAuthorizationInfo(authMode, oAuthScopes)AuthorizationInfoKullanıcının istenen kapsamlar için yetki verip vermediğini kontrol eden bir nesne alır.
getIdentityToken()Stringopenid kapsamı verilmişse etkili kullanıcı için OpenID Connect kimlik jetonu alır.
getInstallationSource()InstallationSourceKomut dosyasının mevcut kullanıcı için eklenti olarak nasıl yüklendiğini belirten bir enum değeri döndürür (örneğin, kullanıcı tarafından Chrome Web Mağazası üzerinden kişisel olarak mı yüklendiği veya bir alan yöneticisi tarafından tüm kullanıcılar için mi yüklendiği).
getOAuthToken()StringEtkili kullanıcı için OAuth 2.0 erişim jetonunu alır.
getProjectTriggers()Trigger[]Geçerli proje ve geçerli kullanıcıyla ilişkili tüm yüklenebilir tetikleyicileri alır.
getScriptId()StringKomut dosyası projesinin benzersiz kimliğini alır.
getService()ServiceKomut dosyasının web uygulaması olarak yayınlanmasını kontrol etmek için kullanılan bir nesneyi alır.
getUserTriggers(document)Trigger[]Belirtilen dokümanda, bu komut dosyası veya eklenti için yalnızca bu kullanıcının sahip olduğu tüm yüklenebilir tetikleyicileri alır.
getUserTriggers(form)Trigger[]Yalnızca bu komut dosyası veya eklenti için, belirtilen formda bu kullanıcının sahip olduğu tüm yüklenebilir tetikleyicileri alır.
getUserTriggers(spreadsheet)Trigger[]Belirtilen e-tabloda, bu kullanıcıya ait ve yüklenebilir tüm tetikleyicileri yalnızca bu komut dosyası veya eklenti için alır.
invalidateAuth()voidGeçerli kullanıcının mevcut komut dosyasını yürütmek için sahip olduğu yetkilendirmeyi geçersiz kılar.
newStateToken()StateTokenBuilderGeri çağırma API'sinde (ör. OAuth akışı) kullanılabilen bir durum jetonu için oluşturucu oluşturur.
newTrigger(functionName)TriggerBuilderTetiklendiğinde belirli bir işlevi çağıran, yüklenebilir bir tetikleyici oluşturma sürecini başlatır.
requireAllScopes(authMode)voidKullanıcının, komut dosyası tarafından istenen tüm kapsamlar için izin verip vermediğini doğrular.
requireScopes(authMode, oAuthScopes)voidKullanıcının istenen kapsamlar için izin verip vermediğini doğrular.

Ayrıntılı belgeler

deleteTrigger(trigger)

Belirtilen tetikleyiciyi kaldırarak artık çalışmamasını sağlar.

// Deletes all triggers in the current project.
const triggers = ScriptApp.getProjectTriggers();
for (let i = 0; i < triggers.length; i++) {
  ScriptApp.deleteTrigger(triggers[i]);
}

Parametreler

AdTürAçıklama
triggerTriggerSilinecek tetikleyici.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

getAuthorizationInfo(authMode)

Kullanıcının tüm komut dosyası gereksinimleri için yetkilendirme verip vermediğini kontrol eden bir nesne alır. Nesne, komut dosyası gereksinimlerinden herhangi birinin yetkilendirilmemesi durumunda kullanıcıların bu izinleri vermesi için bir yetkilendirme URL'si de sağlar.

Bazı komut dosyası yürütmeleri, komut dosyası tarafından kullanılan tüm gerekli kapsamlar için kullanıcının izni olmadan başlatılabilir. Bu nesnedeki bilgiler, belirli kapsamlar gerektiren kod bölümlerine erişimi kontrol etmenize ve sonraki yürütmeler için bu kapsamların yetkilendirilmesini istemenize olanak tanır.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Parametreler

AdTürAçıklama
authModeAuthModeYetkilendirme bilgilerinin istendiği yetkilendirme modu. Diğer yetkilendirme modları, kullanıcıların yetkilendirme vermesini gerektirmediğinden, neredeyse tüm durumlarda authMode değeri ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL) olmalıdır.

Return

AuthorizationInfo: Kullanıcının yetkilendirme durumu hakkında bilgi sağlayabilen bir nesne.


getAuthorizationInfo(authMode, oAuthScopes)

Kullanıcının istenen kapsamlar için yetki verip vermediğini kontrol eden bir nesne alır. Nesne, istenen kapsamlardan herhangi birinin yetkilendirilmemesi durumunda kullanıcılara bu izinleri verebilecekleri bir yetkilendirme URL'si de sağlar.

Bazı komut dosyası yürütmeleri, komut dosyası tarafından kullanılan tüm gerekli kapsamlar için kullanıcının izni olmadan başlatılabilir. Bu nesnedeki bilgiler, belirli kapsamlar gerektiren kod bölümlerine erişimi kontrol etmenize ve sonraki yürütmeler için bu kapsamların yetkilendirilmesini istemenize olanak tanır. Geçersiz olan veya komut dosyası tarafından gerekli olmayan kapsamlar hataya neden olur.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Parametreler

AdTürAçıklama
authModeAuthModeYetkilendirme bilgilerinin istendiği yetkilendirme modu. Neredeyse tüm durumlarda, başka hiçbir yetkilendirme modu kullanıcıların yetkilendirme vermesini gerektirmediğinden authMode değeri ScriptApp.AuthMode.FULL olmalıdır.
oAuthScopesString[]Yetkilendirme bilgilerinin istendiği OAuth kapsamları.

Return

AuthorizationInfo: Kullanıcının yetkilendirme durumu ve bazı izinlerin eksik olması durumunda yetkilendirme URL'si hakkında bilgi sağlayan bir nesne.


getIdentityToken()

openid kapsamı verilmişse etkili kullanıcı için OpenID Connect kimlik jetonu alır. Bu kapsam varsayılan olarak dahil edilmez ve istenmesi için bildirim dosyasında açık kapsam olarak eklenmesi gerekir. Jetonun ek kullanıcı bilgileri döndürmesi için https://www.googleapis.com/auth/userinfo.email veya https://www.googleapis.com/auth/userinfo.profile kapsamlarını ekleyin.

Döndürülen kimlik jetonu, kodlanmış bir JSON Web Token (JWT)'dir ve jetondan bilgi ayıklamak için kodunun çözülmesi gerekir. Aşağıdaki örneklerde jetonun nasıl kodunun çözüleceği ve etkin kullanıcının Google profili kimliğinin nasıl ayıklanacağı gösterilmektedir.

const idToken = ScriptApp.getIdentityToken();
const body = idToken.split('.')[1];
const decoded = Utilities
                    .newBlob(
                        Utilities.base64Decode(body),
                        )
                    .getDataAsString();
const payload = JSON.parse(decoded);

Logger.log(`Profile ID: ${payload.sub}`);
Döndürülen alanların (talepler) tam listesi için OpenID Connect dokümanlarına bakın.

Return

String: Varsa kimlik jetonu, aksi takdirde null.


getInstallationSource()

Komut dosyasının mevcut kullanıcı için eklenti olarak nasıl yüklendiğini belirten bir enum değeri döndürür (örneğin, kullanıcı tarafından Chrome Web Mağazası üzerinden kişisel olarak mı yüklendiği veya bir alan yöneticisi tarafından tüm kullanıcılar için mi yüklendiği).

Return

InstallationSource — Yüklemenin kaynağı.


getOAuthToken()

Etkili kullanıcı için OAuth 2.0 erişim jetonunu alır. Komut dosyasının OAuth kapsamları, normalde kendi OAuth akışını gerektiren başka bir Google API'sini (ör. Google Picker) yetkilendirmek için yeterliyse komut dosyaları, bu jetonu ileterek ikinci yetkilendirme istemini atlayabilir. Jetonun süresi belirli bir süre sonra (en az birkaç dakika) sona erer. Komut dosyaları, yetkilendirme hatalarını işlemeli ve gerektiğinde yeni bir jeton almak için bu yöntemi çağırmalıdır.

Bu yöntem tarafından döndürülen jeton yalnızca komut dosyasının şu anda ihtiyaç duyduğu kapsamları içerir. Daha önce yetkilendirilmiş ancak artık komut dosyası tarafından kullanılmayan kapsamlar döndürülen jetona dahil edilmez. Komut dosyasının kendisinin gerektirdiğinin dışında ek OAuth kapsamlarına ihtiyaç duyulursa bunlar komut dosyasının manifest dosyasında belirtilebilir.

Return

String: OAuth 2.0 jetonunun dize gösterimi.


getProjectTriggers()

Geçerli proje ve geçerli kullanıcıyla ilişkili tüm yüklenebilir tetikleyicileri alır.

Logger.log(
    `Current project has ${ScriptApp.getProjectTriggers().length} triggers.`,
);

Return

Trigger[] — Geçerli kullanıcının bu projeyle ilişkili tetikleyicilerinin dizisi.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

getScriptId()

Komut dosyası projesinin benzersiz kimliğini alır. Bu yöntem, komut dosyası projesinin benzersiz tanımlayıcısını almak için getProjectKey() yerine tercih edilen yöntemdir. Bu kimlik, proje anahtarının daha önce sağlandığı tüm yerlerde kullanılabilir.

Return

String: Komut dosyası projesinin kimliği.


getService()

Komut dosyasının web uygulaması olarak yayınlanmasını kontrol etmek için kullanılan bir nesneyi alır.

// Get the URL of the published web app.
const url = ScriptApp.getService().getUrl();

Return

Service: Komut dosyasının web uygulaması olarak yayınlanmasını gözlemlemek ve kontrol etmek için kullanılan bir nesne.


getUserTriggers(document)

Belirtilen dokümanda, bu komut dosyası veya eklenti için yalnızca bu kullanıcının sahip olduğu tüm yüklenebilir tetikleyicileri alır. Bu yöntem, diğer komut dosyalarına eklenen tetikleyicileri görmek için kullanılamaz.

const doc = DocumentApp.getActiveDocument();
const triggers = ScriptApp.getUserTriggers(doc);
// Log the handler function for the first trigger in the array.
Logger.log(triggers[0].getHandlerFunction());

Parametreler

AdTürAçıklama
documentDocumentYüklenebilir tetikleyiciler içerebilecek bir Google Dokümanlar dosyası.

Return

Trigger[]: Belirtilen dokümanda bu kullanıcıya ait tetikleyicilerin dizisi.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(form)

Yalnızca bu komut dosyası veya eklenti için, belirtilen formda bu kullanıcının sahip olduğu tüm yüklenebilir tetikleyicileri alır. Bu yöntem, diğer komut dosyalarına eklenen tetikleyicileri görmek için kullanılamaz.

const form = FormApp.getActiveForm();
const triggers = ScriptApp.getUserTriggers(form);
// Log the trigger source for the first trigger in the array.
Logger.log(triggers[0].getTriggerSource());

Parametreler

AdTürAçıklama
formFormYüklenebilir tetikleyiciler içerebilen bir Google Formlar dosyası.

Return

Trigger[]: Belirtilen formda bu kullanıcıya ait tetikleyicilerin dizisi.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(spreadsheet)

Belirtilen e-tabloda, bu kullanıcıya ait ve yüklenebilir tüm tetikleyicileri yalnızca bu komut dosyası veya eklenti için alır. Bu yöntem, diğer komut dosyalarına eklenen tetikleyicileri görmek için kullanılamaz.

const ss = SpreadsheetApp.getActiveSpreadsheet();
const triggers = ScriptApp.getUserTriggers(ss);
// Log the event type for the first trigger in the array.
Logger.log(triggers[0].getEventType());

Parametreler

AdTürAçıklama
spreadsheetSpreadsheetYüklenebilir tetikleyiciler içerebilen bir Google E-Tablolar dosyası.

Return

Trigger[]: Belirli bir e-tabloda bu kullanıcıya ait tetikleyicilerin dizisi.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

invalidateAuth()

Geçerli kullanıcının mevcut komut dosyasını yürütmek için sahip olduğu yetkilendirmeyi geçersiz kılar. Mevcut komut dosyası için tüm izinleri geçersiz kılmak üzere kullanılır. Bu, özellikle tek seferlik yetkilendirme olarak etiketlenen işlevler için yararlıdır. Tek seferlik yetkilendirme işlevleri yalnızca komut dosyası yetkilendirme aldıktan sonraki ilk çalıştırmada çağrılabildiğinden, daha sonra bir işlem gerçekleştirmek istiyorsanız komut dosyasının sahip olduğu tüm yetkileri iptal etmeniz gerekir. Böylece kullanıcı, yetkilendirme iletişim kutusunu tekrar görebilir.

ScriptApp.invalidateAuth();

Battaniyeler

Error: Geçersiz kılma işlemi başarısız olduğunda


newStateToken()

Geri çağırma API'sinde (ör. OAuth akışı) kullanılabilen bir durum jetonu için oluşturucu oluşturur.

// Generate a callback URL, given the name of a callback function. The script
// does not need to be published as a web app; the /usercallback URL suffix
// replaces /edit in any script's URL.
function getCallbackURL(callbackFunction) {
  // IMPORTANT: Replace string below with the URL from your script, minus the
  // /edit at the end.
  const scriptUrl =
      'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz';
  const urlSuffix = '/usercallback?state=';
  const stateToken = ScriptApp.newStateToken()
                         .withMethod(callbackFunction)
                         .withTimeout(120)
                         .createToken();
  return scriptUrl + urlSuffix + stateToken;
}

Çoğu OAuth2 akışında state jetonu, yetkilendirme uç noktasına doğrudan (geri çağırma URL'sinin bir parçası olarak değil) iletilir ve yetkilendirme uç noktası da bunu geri çağırma URL'sinin bir parçası olarak iletir.

Örneğin:

  • Komut dosyası, kullanıcıyı OAuth2 yetkilendirme URL'sine yönlendirir: https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters
  • Kullanıcı yetkilendir'i tıkladığında OAuth2 yetkilendirme sayfası kullanıcıyı https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants 'ya geri yönlendirir.
  • Yukarıdaki yönlendirme (http://script.google.com/...'ya geri), tarayıcının /usercallback'ye istek göndermesine neden olur. Bu istek, StateTokenBuilder.withMethod(method) tarafından belirtilen yöntemi çağırır.

Return

StateTokenBuilder: Durum jetonu oluşturma sürecine devam etmek için kullanılan bir nesne.


newTrigger(functionName)

Tetiklendiğinde belirli bir işlevi çağıran, yüklenebilir bir tetikleyici oluşturma sürecini başlatır.

// Creates an edit trigger for a spreadsheet identified by ID.
ScriptApp.newTrigger('myFunction')
    .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3')
    .onEdit()
    .create();

Tetikleyici oluşturmadan önce, ilişkili işlevin gerekli tüm OAuth izinlerine sahip olduğunu doğrulayın.

Parametreler

AdTürAçıklama
functionNameStringTetikleyici etkinleştiğinde çağrılacak işlev. Library.libFunction1 gibi dahil edilen kitaplıklardaki işlevleri kullanabilirsiniz.

Return

TriggerBuilder: Tetikleyici oluşturma sürecine devam etmek için kullanılan bir nesne.

Yetkilendirme

Bu yöntemi kullanan komut dosyaları, aşağıdaki kapsamlardan biri veya daha fazlasıyla yetkilendirme gerektirir:

  • https://www.googleapis.com/auth/script.scriptapp

requireAllScopes(authMode)

Kullanıcının, komut dosyası tarafından istenen tüm kapsamlar için izin verip vermediğini doğrular. Yürütme akışı, bir komut dosyasının istediği tüm kapsamları kullanıyorsa bu yöntemi kullanın. Herhangi bir izin eksikse bu yöntem mevcut yürütmeyi sonlandırır ve eksik izinleri istemek için bir yetkilendirme istemi oluşturur.

Bu yöntem yalnızca kullanıcılar komut dosyasını ayrıntılı izni destekleyen bir yüzeyden (ör. Apps Komut Dosyası IDE'si içinden) çalıştırdığında işe yarar. Komut dosyası, Google Workspace eklentisi gibi desteklenmeyen bir yüzeyden eksik izinlerle çalıştırıldığında, yürütmenin başında tüm kapsamları istemek için bir yetkilendirme istemi oluşturur.

ScriptApp.requireAllScopes(ScriptApp.AuthMode.FULL);

Parametreler

AdTürAçıklama
authModeAuthModeKomut dosyası kapsamlarının değerlendirilmesi gereken yetkilendirme modu. Neredeyse tüm durumlarda, başka hiçbir yetkilendirme modu kullanıcıların yetkilendirme vermesini gerektirmediğinden authMode değeri ScriptApp.AuthMode.FULL olmalıdır.

requireScopes(authMode, oAuthScopes)

Kullanıcının istenen kapsamlar için izin verip vermediğini doğrular. Bir yürütme akışı bir veya daha fazla hizmete bağlıysa bu yöntemi kullanın. Belirtilen izinlerden herhangi biri eksikse bu yöntem mevcut yürütmeyi sonlandırır ve eksik izinleri istemek için bir yetkilendirme istemi oluşturur. Geçersiz olan veya komut dosyası tarafından gerekli olmayan kapsamlar hataya neden olur.

Bu yöntem yalnızca kullanıcılar komut dosyasını ayrıntılı izni destekleyen bir yüzeyden (ör. Apps Komut Dosyası IDE'si içinden) çalıştırdığında işe yarar. Komut dosyası, Google Workspace eklentisi gibi desteklenmeyen bir yüzeyden eksik izinlerle çalıştırıldığında, yürütmenin başında tüm kapsamları istemek için bir yetkilendirme istemi oluşturur.

ScriptApp.requireScopes(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);

Parametreler

AdTürAçıklama
authModeAuthModeİstenen kapsamların değerlendirilmesi gereken yetkilendirme modu. Neredeyse tüm durumlarda, başka hiçbir yetkilendirme modu kullanıcıların yetkilendirme vermesini gerektirmediğinden authMode değeri ScriptApp.AuthMode.FULL olmalıdır.
oAuthScopesString[]Belirli bir yürütme akışının tamamlanması için gereken OAuth kapsamları.

Kullanımdan kaldırılan yöntemler