ฟังก์ชันที่กำหนดเองคือฟังก์ชันในสคริปต์ที่เชื่อมโยงกับ Google ชีต ซึ่งคุณเรียกใช้ได้โดยตรงจากเซลล์โดยใช้ไวยากรณ์ =myFunctionName() ดังนั้นฟังก์ชันที่กำหนดเองจึงคล้ายกับฟังก์ชันในตัวหลายร้อยฟังก์ชันในชีต เช่น AVERAGE หรือ SUM เพียงแต่คุณกำหนดลักษณะการทำงานของฟังก์ชันที่กำหนดเอง
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-08-04 UTC"],[[["\u003cp\u003eBound scripts are Google Apps Scripts attached to Google Docs, Sheets, Slides, or Forms, offering special privileges to interact with their parent file.\u003c/p\u003e\n"],["\u003cp\u003eUnlike standalone scripts, bound scripts reside within their container file and cannot be detached, functioning like unpublished add-ons specific to that file.\u003c/p\u003e\n"],["\u003cp\u003eThey allow the use of special methods to programmatically access and manipulate the parent file's content and user interface.\u003c/p\u003e\n"],["\u003cp\u003eBound scripts can be shared by sharing the container file, enabling collaborators with edit access to run the script.\u003c/p\u003e\n"],["\u003cp\u003eThese scripts can also be published as add-ons, making them accessible to a wider audience through the add-on store.\u003c/p\u003e\n"]]],[],null,["A script is bound to a Google Sheets, Docs, Slides, or Forms file if it was\ncreated from that document rather than as a [standalone script](/apps-script/guides/standalone).\nThe file that a bound script is attached to is called a \"container.\"\nBound scripts generally behave like standalone scripts except that they\ndo not appear in Google Drive, they cannot be detached from the file\nthey are bound to, and they gain a few special privileges over the parent file.\n\nNote that scripts can also be bound to Google Sites, but these scripts are\nalmost always deployed as [web apps](/apps-script/guides/web). Scripts\nbound to Google Sheets, Docs, Slides, or Forms can also become web apps, although\nthis is uncommon.\n| **Note:** Bound scripts are effectively unpublished [add-ons](/workspace/add-ons/concepts/types#editor_add-ons) that function only for the file they are bound to.\n\nCreate a bound script\n\nGoogle Docs, Sheets, or Slides\n\nTo create a bound script in Google Docs, Sheets, or Slides, open a document in\nDocs, a spreadsheet in Sheets, or a presentation in Slides and click\n**Extensions**\n\\\u003e **Apps Script** . To reopen the script in\nthe future, do the same thing or open the script from the\n[Apps Script dashboard](https://script.google.com/home).\n\nGoogle Forms\n\nTo create a bound script in Google Forms, open a form\nand click More more_vert\n\\\u003e **Script\neditor** . To reopen the script in the\nfuture, do the same thing or open the script from the\n[Apps Script dashboard](https://script.google.com/home).\n| **Note:** The [`clasp`](/apps-script/guides/clasp) tool can't create bound scripts, but it can clone and edit them.\n\nSpecial methods\n\nBound scripts can call a few methods that standalone scripts cannot:\n\n- [`getActiveSpreadsheet()`](/apps-script/reference/spreadsheet/spreadsheet-app#getActiveSpreadsheet()), [`getActiveDocument()`](/apps-script/reference/document/document-app#getActiveDocument()), [`getActivePresentation()`](/apps-script/reference/slides/slides-app#getactivepresentation), and [`getActiveForm()`](/apps-script/reference/forms/form-app#getActiveForm()) allow bound scripts to refer to their parent file without referring to the file's ID.\n- [`getUi`](/apps-script/reference/spreadsheet/spreadsheet-app#getUi()) lets bound scripts access the user interface for their parent file to add [custom menus, dialogs, and sidebars](#custom_menus_dialogs_and_sidebars).\n- In Google Sheets, [`getActiveSheet()`](/apps-script/reference/spreadsheet/spreadsheet-app#getActiveSheet()), [`getActiveRange()`](/apps-script/reference/spreadsheet/spreadsheet-app#getActiveRange()), and [`getActiveCell()`](/apps-script/reference/spreadsheet/sheet#getActiveCell()) let the script determine the user's current sheet, selected range of cells, or selected individual cell. [`setActiveSheet(sheet)`](/apps-script/reference/spreadsheet/spreadsheet-app#setActiveSheet(Sheet)) and [`setActiveRange(range)`](/apps-script/reference/spreadsheet/spreadsheet-app#setActiveRange(Range)) let the script change those selections.\n- In Google Docs, [`getActiveTab()`](/apps-script/reference/document/document#getActiveTab()), [`getCursor()`](/apps-script/reference/document/document#getCursor()), and [`getSelection()`](/apps-script/reference/document/document#getSelection()) let the script determine the user's current tab, position of the user's cursor, or selected text. [`setActiveTab(tabId)`](/apps-script/reference/document/document#setActiveTab(String)), [`setCursor(position)`](/apps-script/reference/document/document#setCursor(Position)) and [`setSelection(range)`](/apps-script/reference/document/document#setSelection(Range)) let the script change those selections.\n\nFor more information, see the\n[guide to extending Google Sheets](/apps-script/guides/sheets) or\nthe [guide to extending Google Docs](/apps-script/guides/docs).\n| **Note:** These methods are only available to bound scripts run from the script editor, menu items, dialogs, sidebars, or triggers. When a bound script is run as a web app or via the [Apps Script API](/apps-script/api/how-tos/execute), these methods are not available.\n\nCustom menus, dialogs, and sidebars\n\nBound scripts can customize Google Sheets, Docs, and Forms by adding\n[custom menus](/apps-script/guides/menus) and\n[dialog boxes or sidebars](/apps-script/guides/dialogs). Keep in mind,\nhowever, that a script can only interact with the user interface for the\ncurrent instance of an open file. That is, a script bound to one document\ncannot affect the user interface of another document.\n| Add-ons can also add custom menus, dialogs and sidebars. It is recommended to develop add-ons using [standalone scripts](/apps-script/guides/standalone).\n\nTriggers\n\nBound scripts can use [simple triggers](/apps-script/guides/triggers)\nlike the special `onOpen()` function, which runs automatically whenever a file\nis opened by a user who has edit access. Like all types of scripts, they can\nalso use [installable triggers](/apps-script/guides/triggers/installable).\n\nCustom functions\n\nA [custom function](/apps-script/guides/sheets/functions) is a function in a\nscript bound to Google Sheets that you call directly from a cell using the\nsyntax `=myFunctionName()`. Custom functions are thus similar to the hundreds of\n[built-in functions](https://support.google.com/drive/topic/1361471) in Sheets\nlike [`AVERAGE`](https://support.google.com/drive/answer/3093615) or\n[`SUM`](https://support.google.com/drive/answer/3093669) except that you define\nthe custom function's behavior.\n\nAccess to bound scripts\n\nOnly users who have permission to edit a container can run its bound script.\nCollaborators who have only view access can't open the script\neditor, although if they make a copy of the container file, they become the\nowner of the copy and can see and run a copy of the script.\n\nTo learn how to share a script's container file, refer to [Share files from\nGoogle Drive](https://support.google.com/drive/answer/2494822).\n| All container-bound scripts use the same owner, viewer, and editor access list defined for the container file. The container owner takes ownership of a new script project regardless of who created it."]]