
This plugin is in the community plugin browser in Obsidian. Search for MetaEdit and you can install it from there.
Community Plugins inside Obsidian. There is a folder icon on the right of Installed Plugins. Click that and it opens your plugins folder.main.js file, manifest.json file, and a styles.css file.You can access the API by using app.plugins.plugins["metaedit"].api.
I recommend destructuring the API, like so:
const {autoprop} = this.app.plugins.plugins["metaedit"].api;
autoprop(propertyName: string)Takes a string containing a property name. Looks for the property in user settings and will open a suggester with possible values for that property.
Returns the selected value. If no value was selected, or if the property was not found in settings, it returns null.
This is an asynchronous function, so you should await it.
update(propertyName: string, propertyValue: string, file: TFile | string)Updates a property with the given name to the given value in the given file.
If the file is a string, it should be the file path. Otherwise, a TFile is fine.
This is an asynchronous function, so you should await it.
getPropertyValue(propertyName: string, file: TFile | string)Gets the value of the given property in the given file.
If the file is a string, it should be the file path. Otherwise, a TFile is fine.
This is an asynchronous function, so you should await it.
<%*
const {autoprop} = this.app.plugins.plugins["metaedit"].api;
_%>
#tasks
Complete:: 0
Project::
Status:: <% await autoprop("Status") %>
Priority:: <% await autoprop("Priority") %>
Due Date::
Complete:: 0
Energy::
Estimated Time::
Total:: 1
Complete:: 0
Incomplete:: 1
---
- [ ] <% tp.file.cursor() %>

Requires Dataview and Buttons.
```dataviewjs
const {update} = this.app.plugins.plugins["metaedit"].api
const {createButton} = app.plugins.plugins["buttons"]
dv.table(["Name", "Status", "Project", "Due Date", ""], dv.pages("#tasks")
.sort(t => t["due-date"], 'desc')
.where(t => t.status != "Completed")
.map(t => [t.file.link, t.status, t.project, t["due-date"],
createButton({app, el: this.container, args: {name: "Done!"}, clickOverride: {click: update, params: ['Status', 'Completed', t.file.path]}})])
)
```

Requires Dataview.
```dataviewjs
const {update} = this.app.plugins.plugins["metaedit"].api;
const buttonMaker = (pn, pv, fpath) => {
const btn = this.container.createEl('button', {"text": "Done!"});
const file = this.app.vault.getAbstractFileByPath(fpath)
btn.addEventListener('click', async (evt) => {
evt.preventDefault();
await update(pn, pv, file);
});
return btn;
}
dv.table(["Name", "Status", "Project", "Due Date", ""], dv.pages("#tasks")
.sort(t => t["due-date"], 'desc')
.where(t => t.status != "Completed")
.map(t => [t.file.link, t.status, t.project, t["due-date"],
buttonMaker('Status', 'Completed', t.file.path)])
)
```

Made by Christian B. B. Houmann Discord: Chhrriissyy#6548 Twitter: https://twitter.com/chrisbbh Feel free to @ me if you have any questions.
Also from dev: NoteTweet: Post tweets directly from Obsidian.