First, search the help docs and this forum. Maybe your question has been answered! The debugging steps can help, too. Still stuck? Delete this line and proceed.
What I’m trying to do
Trying to get code to work in a Templater template.
I’m getting an parsing error message
Things I have tried
Just about everything but maybe there’s something I’m missing. I was only copying and pasting the code - I’m not a coder.
This is the code I’m getting an error on:
let title = tp.file.title
if ( title.startsWith(“Untitled”) ) {
title = await tp.system.prompt("Person name (first last): ")
await tp.file.rename(title)
}
let firstLetter = title.charAt(0).toUpperCase()
let folder = “”
<%*
let title = tp.file.title;
// Prompt if "Untitled..."
if (title.startsWith("Untitled")) {
title = await tp.system.prompt("Person name (first last): ")
};
let firstLetter = title.charAt(0).toUpperCase();
let folder;
if (firstLetter >= "A" && firstLetter <= "C") {
folder = "3 Resources/Persons/A - C"
} else if (firstLetter >= "D" && firstLetter <= "F") {
folder = "3 Resources/Persons/D - F"
} else if (firstLetter >= "G" && firstLetter <= "J") {
folder = "3 Resources/Persons/G - J"
} else if (firstLetter >= "K" && firstLetter <= "M") {
folder = "3 Resources/Persons/K - M"
} else if (firstLetter >= "N" && firstLetter <= "R") {
folder = "3 Resources/Persons/N - R"
} else if (firstLetter >= "S" && firstLetter <= "T") {
folder = "3 Resources/Persons/S - T"
} else {
folder = "3 Resources/Persons/U - Z"
};
// Move the file to the appropriate folder and rename it
await tp.file.move(`${folder}/${title}/${title}`);
-%>
<% title %>
… which seemed to work from my side of the screen …
I can’t say why you were getting the parsing error though as you didn’t wrap the template within a code block (it could have just been a “smart quote” issue )
I’ve changed a little bit the workflow: Instead of renaming the file within the first if, the file gets renamed while being moved (as tp.file.move() can do that) but if you prefer renaming within the 1st if, this should work too :
<%*
let title = tp.file.title;
if (title.startsWith("Untitled")) {
title = await tp.system.prompt("Person name (first last): ")
await tp.file.rename(title)
};
let firstLetter = title.charAt(0).toUpperCase();
let folder;
if (firstLetter >= "A" && firstLetter <= "C") {
folder = "3 Resources/Persons/A - C"
} else if (firstLetter >= "D" && firstLetter <= "F") {
folder = "3 Resources/Persons/D - F"
} else if (firstLetter >= "G" && firstLetter <= "J") {
folder = "3 Resources/Persons/G - J"
} else if (firstLetter >= "K" && firstLetter <= "M") {
folder = "3 Resources/Persons/K - M"
} else if (firstLetter >= "N" && firstLetter <= "R") {
folder = "3 Resources/Persons/N - R"
} else if (firstLetter >= "S" && firstLetter <= "T") {
folder = "3 Resources/Persons/S - T"
} else {
folder = "3 Resources/Persons/U - Z"
};
// Move the file to the appropriate folder
await tp.file.move(`${folder}/${title}/${title}`);
-%>
<% title %>
I’m also not entirely sure where you want the file to be moved : the folder + "/" + title + "/" + title would create a subfolder within folder titled in the same way as the note … I left it as it is but if you don’t want/need to create a subfolder bearing the same name as the note, I think you’d just need to remove one of the title within the tp.file.move().
So, something like: