Class ScriptApp

สคริปต์แอป

เข้าถึงและจัดการการเผยแพร่สคริปต์และทริกเกอร์ คลาสนี้ช่วยให้ผู้ใช้สร้างทริกเกอร์สคริปต์และควบคุมการเผยแพร่สคริปต์เป็นบริการได้

พร็อพเพอร์ตี้

พร็อพเพอร์ตี้ประเภทคำอธิบาย
AuthModeAuthModeการแจกแจงที่ระบุหมวดหมู่ของบริการที่ได้รับอนุญาตซึ่ง Apps Script สามารถดำเนินการผ่านฟังก์ชันที่ทริกเกอร์
AuthorizationStatusAuthorizationStatusการแจกแจงที่ระบุสถานะการให้สิทธิ์ของสคริปต์
EventTypeEventTypeการแจกแจงที่ระบุประเภทของเหตุการณ์ที่ทริกเกอร์
InstallationSourceInstallationSourceการแจกแจงที่ระบุวิธีติดตั้งสคริปต์เป็นส่วนเสริมให้กับผู้ใช้
TriggerSourceTriggerSourceการแจกแจงที่ระบุแหล่งที่มาของเหตุการณ์ที่ทริกเกอร์ให้เริ่มทํางาน
WeekDayWeekdayการแจกแจงที่แสดงวันในสัปดาห์

เมธอด

วิธีการประเภทการแสดงผลรายละเอียดแบบย่อ
deleteTrigger(trigger)voidนําทริกเกอร์ที่ระบุออกเพื่อไม่ให้ทริกเกอร์ทํางานอีกต่อไป
getAuthorizationInfo(authMode)AuthorizationInfoรับออบเจ็กต์ที่ใช้เพื่อระบุว่าผู้ใช้ต้องให้สิทธิ์สคริปต์นี้เพื่อใช้บริการอย่างน้อย 1 รายการหรือไม่ และเพื่อระบุ URL สําหรับกล่องโต้ตอบการให้สิทธิ์
getIdentityToken()Stringรับโทเค็นข้อมูลประจำตัว OpenID Connect สำหรับผู้ใช้ที่มีประสิทธิภาพ หากได้รับสิทธิ์สโคป openid
getInstallationSource()InstallationSourceแสดงผลค่า Enum ที่ระบุวิธีติดตั้งสคริปต์เป็นส่วนเสริมสําหรับผู้ใช้ปัจจุบัน (เช่น ผู้ใช้ติดตั้งด้วยตนเองผ่าน Chrome เว็บสโตร์ หรือผู้ดูแลระบบโดเมนติดตั้งสําหรับผู้ใช้ทุกคน)
getOAuthToken()Stringรับโทเค็นการเข้าถึง OAuth 2.0 สำหรับผู้ใช้ที่มีสิทธิ์
getProjectTriggers()Trigger[]รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งเชื่อมโยงกับโปรเจ็กต์ปัจจุบันและผู้ใช้ปัจจุบัน
getScriptId()Stringรับรหัสที่ไม่ซ้ำกันของโปรเจ็กต์สคริปต์
getService()Serviceรับออบเจ็กต์ที่ใช้ควบคุมการเผยแพร่สคริปต์เป็นเว็บแอป
getUserTriggers(document)Trigger[]รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งผู้ใช้รายนี้เป็นเจ้าของในเอกสารที่ระบุ สำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น
getUserTriggers(form)Trigger[]รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดที่เป็นของผู้ใช้รายนี้ในรูปแบบที่ระบุสำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น
getUserTriggers(spreadsheet)Trigger[]รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งผู้ใช้รายนี้เป็นเจ้าของในสเปรดชีตที่ระบุสำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น
invalidateAuth()voidทำให้การให้สิทธิ์ที่ผู้ใช้ที่มีผลมีสิทธิ์ใช้เพื่อเรียกใช้สคริปต์ปัจจุบันเป็นโมฆะ
newStateToken()StateTokenBuilderสร้างโปรแกรมสร้างสําหรับโทเค็นสถานะที่ใช้ใน API การเรียกกลับได้ (เช่น โฟลว์ OAuth)
newTrigger(functionName)TriggerBuilderเริ่มกระบวนการสร้างทริกเกอร์ที่ติดตั้งได้ ซึ่งจะเรียกใช้ฟังก์ชันหนึ่งๆ เมื่อทริกเกอร์ทำงาน

เอกสารประกอบโดยละเอียด

deleteTrigger(trigger)

นําทริกเกอร์ที่ระบุออกเพื่อไม่ให้ทริกเกอร์ทํางานอีกต่อไป

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
triggerTriggerทริกเกอร์ที่จะลบ

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

getAuthorizationInfo(authMode)

รับออบเจ็กต์ที่ใช้เพื่อระบุว่าผู้ใช้ต้องให้สิทธิ์สคริปต์นี้เพื่อใช้บริการอย่างน้อย 1 รายการหรือไม่ และเพื่อระบุ URL สําหรับกล่องโต้ตอบการให้สิทธิ์ หากเผยแพร่สคริปต์เป็นส่วนเสริมที่ใช้ทริกเกอร์ที่ติดตั้งได้ ระบบจะใช้ข้อมูลนี้เพื่อควบคุมการเข้าถึงส่วนโค้ดที่ผู้ใช้ไม่มีสิทธิ์ที่จำเป็นได้ หรือส่วนเสริมอาจขอให้ผู้ใช้เปิด URL สำหรับกล่องโต้ตอบการให้สิทธิ์เพื่อแก้ปัญหา

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
authModeAuthModeโหมดการให้สิทธิ์ที่ขอข้อมูลการให้สิทธิ์ ซึ่งเกือบทุกกรณี ค่าของ authMode ควรเป็น ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL) เนื่องจากไม่มีโหมดการให้สิทธิ์อื่นที่กําหนดให้ผู้ใช้ต้องให้สิทธิ์

รีเทิร์น

AuthorizationInfo — ออบเจ็กต์ที่ให้ข้อมูลเกี่ยวกับสถานะการให้สิทธิ์ของผู้ใช้


getIdentityToken()

รับโทเค็นข้อมูลประจำตัว OpenID Connect สำหรับผู้ใช้ที่มีประสิทธิภาพ หากได้รับสิทธิ์สโคป openid ขอบเขตนี้จะไม่รวมอยู่โดยค่าเริ่มต้น และคุณต้องเพิ่มเป็นขอบเขตที่ชัดเจนในไฟล์ Manifest เพื่อขอ ใส่ขอบเขต https://www.googleapis.com/auth/userinfo.email หรือ https://www.googleapis.com/auth/userinfo.profile เพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ในโทเค็น

โทเค็นระบุตัวตนที่แสดงผลคือ JSON Web Token (JWT) ที่เข้ารหัส และจะต้องถอดรหัสเพื่อดึงข้อมูลจากโทเค็น ตัวอย่างต่อไปนี้แสดงวิธีถอดรหัสโทเค็นและดึงรหัสโปรไฟล์ Google ของผู้ใช้ที่มีประสิทธิภาพ

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}`);
ดูรายการช่อง (การอ้างสิทธิ์) ทั้งหมดที่แสดงผลได้ในเอกสารประกอบของ OpenID Connect

รีเทิร์น

String — โทเค็นระบุตัวตน (หากมี) หรือ null


getInstallationSource()

แสดงผลค่า Enum ที่ระบุวิธีติดตั้งสคริปต์เป็นส่วนเสริมสําหรับผู้ใช้ปัจจุบัน (เช่น ผู้ใช้ติดตั้งด้วยตนเองผ่าน Chrome เว็บสโตร์ หรือผู้ดูแลระบบโดเมนติดตั้งสําหรับผู้ใช้ทุกคน)

รีเทิร์น

InstallationSource — แหล่งที่มาของการติดตั้ง


getOAuthToken()

รับโทเค็นการเข้าถึง OAuth 2.0 สำหรับผู้ใช้ที่มีสิทธิ์ หากขอบเขต OAuth ของสคริปต์เพียงพอที่จะให้สิทธิ์ Google API อื่นซึ่งปกติต้องใช้ขั้นตอนการให้สิทธิ์ OAuth ของตนเอง (เช่น Google Picker) สคริปต์จะข้ามข้อความแจ้งให้สิทธิ์ครั้งที่ 2 ได้โดยส่งโทเค็นนี้แทน โทเค็นจะหมดอายุหลังจากผ่านไประยะหนึ่ง (อย่างน้อย 2-3 นาที) สคริปต์ควรจัดการกับการให้สิทธิ์ที่ไม่สําเร็จและเรียกใช้เมธอดนี้เพื่อรับโทเค็นใหม่เมื่อจําเป็น

โทเค็นที่แสดงผลโดยเมธอดนี้จะรวมเฉพาะขอบเขตที่ต้องใช้กับสคริปต์ในขณะนี้ โทเค็นที่ส่งคืนจะไม่รวมขอบเขตที่ได้รับสิทธิ์ก่อนหน้านี้แต่สคริปต์ไม่ได้ใช้แล้ว หากต้องการขอบเขต OAuth เพิ่มเติมนอกเหนือจากที่ต้องใช้กับสคริปต์เอง คุณสามารถระบุขอบเขตเหล่านั้นได้ในไฟล์ Manifest ของสคริปต์

รีเทิร์น

String — การนําเสนอสตริงของโทเค็น OAuth 2.0


getProjectTriggers()

รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งเชื่อมโยงกับโปรเจ็กต์ปัจจุบันและผู้ใช้ปัจจุบัน

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

รีเทิร์น

Trigger[] — อาร์เรย์ของทริกเกอร์ของผู้ใช้ปัจจุบันที่เชื่อมโยงกับโปรเจ็กต์นี้

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

getScriptId()

รับรหัสที่ไม่ซ้ำกันของโปรเจ็กต์สคริปต์ วิธีนี้เป็นวิธีที่แนะนำในการรับตัวระบุที่ไม่ซ้ำกันสำหรับโปรเจ็กต์สคริปต์ แทนที่จะใช้ getProjectKey() รหัสนี้ใช้ได้ในทุกที่ที่ระบุคีย์โปรเจ็กต์ไว้ก่อนหน้านี้

รีเทิร์น

String — รหัสโปรเจ็กต์สคริปต์


getService()

รับออบเจ็กต์ที่ใช้ควบคุมการเผยแพร่สคริปต์เป็นเว็บแอป

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

รีเทิร์น

Service — ออบเจ็กต์ที่ใช้สังเกตและควบคุมการเผยแพร่สคริปต์เป็นเว็บแอป


getUserTriggers(document)

รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งผู้ใช้รายนี้เป็นเจ้าของในเอกสารที่ระบุ สำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น วิธีการนี้ใช้เพื่อดูทริกเกอร์ที่แนบอยู่กับสคริปต์อื่นๆ ไม่ได้

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
documentDocumentไฟล์ Google เอกสารที่อาจมีทริกเกอร์ที่ติดตั้งได้

รีเทิร์น

Trigger[] — อาร์เรย์ของทริกเกอร์ที่ผู้ใช้รายนี้เป็นเจ้าของในเอกสารที่ระบุ

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

getUserTriggers(form)

รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดที่เป็นของผู้ใช้รายนี้ในรูปแบบที่ระบุสำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น วิธีการนี้ใช้เพื่อดูทริกเกอร์ที่แนบอยู่กับสคริปต์อื่นๆ ไม่ได้

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
formFormไฟล์ Google ฟอร์มที่อาจมีทริกเกอร์ที่ติดตั้งได้

รีเทิร์น

Trigger[] — อาร์เรย์ของทริกเกอร์ที่ผู้ใช้รายนี้เป็นเจ้าของในรูปแบบที่ระบุ

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

getUserTriggers(spreadsheet)

รับทริกเกอร์ที่ติดตั้งได้ทั้งหมดซึ่งผู้ใช้รายนี้เป็นเจ้าของในสเปรดชีตที่ระบุสำหรับสคริปต์หรือส่วนเสริมนี้เท่านั้น วิธีการนี้ใช้เพื่อดูทริกเกอร์ที่แนบอยู่กับสคริปต์อื่นๆ ไม่ได้

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
spreadsheetSpreadsheetไฟล์ Google ชีตที่อาจมีทริกเกอร์ที่ติดตั้งได้

รีเทิร์น

Trigger[] — อาร์เรย์ทริกเกอร์ที่ผู้ใช้รายนี้เป็นเจ้าของในสเปรดชีตที่ระบุ

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

invalidateAuth()

ทำให้การให้สิทธิ์ที่ผู้ใช้ที่มีผลมีสิทธิ์ใช้เพื่อเรียกใช้สคริปต์ปัจจุบันเป็นโมฆะ ใช้เพื่อทำให้สิทธิ์ทั้งหมดของสคริปต์ปัจจุบันเป็นโมฆะ ซึ่งจะเป็นประโยชน์อย่างยิ่งสำหรับฟังก์ชันที่ติดแท็กเป็นการให้สิทธิ์แบบครั้งเดียว เนื่องจากฟังก์ชันการให้สิทธิ์แบบครั้งเดียวจะเรียกใช้ได้เฉพาะในการเรียกใช้ครั้งแรกหลังจากที่สคริปต์ได้รับสิทธิ์แล้ว หากคุณต้องการดําเนินการหลังจากนั้น คุณต้องเพิกถอนการให้สิทธิ์ทั้งหมดที่สคริปต์มีเพื่อให้ผู้ใช้เห็นกล่องโต้ตอบการให้สิทธิ์อีกครั้ง

ScriptApp.invalidateAuth();

โยน

Error — เมื่อการทำให้ไม่มีผลไม่สำเร็จ


newStateToken()

สร้างโปรแกรมสร้างสําหรับโทเค็นสถานะที่ใช้ใน API การเรียกกลับได้ (เช่น โฟลว์ OAuth)

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

ในขั้นตอน OAuth2 ส่วนใหญ่ ระบบจะส่งโทเค็น state ไปยังปลายทางการให้สิทธิ์โดยตรง (ไม่ใช่เป็นส่วนหนึ่งของ URL ติดต่อกลับ) จากนั้นปลายทางการให้สิทธิ์จะส่งโทเค็นดังกล่าวเป็นส่วนหนึ่งของ URL ติดต่อกลับ

เช่น

  • สคริปต์เปลี่ยนเส้นทางผู้ใช้ไปยัง URL การให้สิทธิ์ OAuth2: 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
  • ผู้ใช้คลิก "ให้สิทธิ์" แล้วหน้าการให้สิทธิ์ OAuth2 จะเปลี่ยนเส้นทางผู้ใช้กลับไปที่ https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants
  • การเปลี่ยนเส้นทางข้างต้น (กลับไปที่ http://script.google.com/...) ทําให้เบราว์เซอร์ส่งคําขอไปยัง /usercallback ซึ่งเรียกใช้เมธอดที่ระบุโดย StateTokenBuilder.withMethod(method)

รีเทิร์น

StateTokenBuilder — ออบเจ็กต์ที่ใช้เพื่อดําเนินกระบวนการสร้างโทเค็นสถานะต่อ


newTrigger(functionName)

เริ่มกระบวนการสร้างทริกเกอร์ที่ติดตั้งได้ ซึ่งจะเรียกใช้ฟังก์ชันหนึ่งๆ เมื่อทริกเกอร์ทำงาน

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

พารามิเตอร์

ชื่อประเภทคำอธิบาย
functionNameStringฟังก์ชันที่จะเรียกใช้เมื่อทริกเกอร์เริ่มทํางาน คุณสามารถใช้ฟังก์ชันจากคลังรวม เช่น Library.libFunction1

รีเทิร์น

TriggerBuilder — ออบเจ็กต์ที่ใช้เพื่อดําเนินการต่อในกระบวนการสร้างทริกเกอร์

การให้สิทธิ์

สคริปต์ที่ใช้วิธีการนี้ต้องได้รับอนุญาตด้วยขอบเขตต่อไปนี้อย่างน้อย 1 รายการ

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

วิธีการที่เลิกใช้งาน