# Tag valueChanged Script Project Library Script Relative Tag Path

**URL:** <https://forum.inductiveautomation.com/t/tag-valuechanged-script-project-library-script-relative-tag-path/82003>\
**Category:** Ignition\
**Tags:** ignition81, scripting\
**Created:** [November 16, 2023, 5:59pm UTC](https://forum.inductiveautomation.com/t/tag-valuechanged-script-project-library-script-relative-tag-path/82003 "2023-11-16T17:59:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [November 16, 2023, 5:59pm UTC](https://forum.inductiveautomation.com/t/tag-valuechanged-script-project-library-script-relative-tag-path/82003/1 "2023-11-16T17:59:10Z")

</div>

I've got a tag `valueChanged` script that uses relative paths. I need to use this same script in a couple different tag scripts, so naturally I want to move it to the project library. This tag is in a UDT and within the script, it's using relative tag paths to read/write a couple of others.

How should the relative tag paths be handled? Should I pass the `tagPath` variable to the proejct script and update the `[.]` accordingly, or can the project library script use the `[.]` specifier since it'll be called from that tag's `valueChanged` script?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [November 16, 2023, 6:17pm UTC](https://forum.inductiveautomation.com/t/tag-valuechanged-script-project-library-script-relative-tag-path/82003/2 "2023-11-16T18:17:08Z")

</div>

The called project library script will be running with java thread locals that identify the calling context. If that context accepts relative paths in tag scripting, then your project library script will be able to do the same.

Project library scripts have no context or scope of their own--they always use the caller's scope and context.
