UmyaSpreadsheet.DocumentProperties (umya_spreadsheet_ex v0.7.0)
View SourceFunctions for managing document properties and custom metadata in spreadsheets.
This module provides comprehensive functionality for:
- Custom document properties (metadata)
- Core document properties (title, description, subject, etc.)
- Property management utilities
Document properties allow you to store additional metadata about your spreadsheets, such as author information, project details, custom business data, and more.
Summary
Functions
Clears all custom properties.
Gets all core document properties as a map.
Gets the document category.
Gets the document company.
Gets the document created date.
Gets the document creator.
Gets the count of custom properties.
Gets a custom document property value by name.
Gets a list of all custom property names.
Gets the document description.
Gets the document keywords.
Gets the document last modified by.
Gets the document manager.
Gets the document modified date.
Gets the document subject.
Gets the document title.
Checks if a custom property exists.
Removes a custom document property.
Sets the document category.
Sets the document company.
Sets the document created date.
Sets the document creator.
Sets a custom document property with automatic type detection.
Sets a custom document property with a boolean value.
Sets a custom document property with a date value.
Sets a custom document property with a numeric value.
Sets a custom document property with a string value.
Sets the document description.
Sets the document keywords.
Sets the document last modified by.
Sets the document manager.
Sets the document modified date.
Sets multiple document properties at once.
Sets the document subject.
Sets the document title.
Functions
Clears all custom properties.
Parameters
spreadsheet
- The spreadsheet struct
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.clear_custom_properties(spreadsheet)
Gets all core document properties as a map.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, properties_map}
- Map of all core properties{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, properties} = UmyaSpreadsheet.DocumentProperties.get_all_properties(spreadsheet)
# properties = %{
# title: "My Report",
# description: "Monthly sales report",
# creator: "John Doe",
# ...
# }
Gets the document category.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, category}
- The document category as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Business"} = UmyaSpreadsheet.DocumentProperties.get_category(spreadsheet)
Gets the document company.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, company}
- The document company as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Acme Corp"} = UmyaSpreadsheet.DocumentProperties.get_company(spreadsheet)
Gets the document created date.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, created}
- The created date as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "2024-01-01T00:00:00Z"} = UmyaSpreadsheet.DocumentProperties.get_created(spreadsheet)
Gets the document creator.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, creator}
- The document creator as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "John Doe"} = UmyaSpreadsheet.DocumentProperties.get_creator(spreadsheet)
Gets the count of custom properties.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, count}
- Number of custom properties{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, 3} = UmyaSpreadsheet.DocumentProperties.get_custom_properties_count(spreadsheet)
Gets a custom document property value by name.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom property
Returns
{:ok, value}
- The property value (string, number, boolean, or date){:error, :not_found}
- If the property doesn't exist{:error, reason}
- On other failures
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Project Alpha"} = UmyaSpreadsheet.DocumentProperties.get_custom_property(spreadsheet, "ProjectName")
{:error, :not_found} = UmyaSpreadsheet.DocumentProperties.get_custom_property(spreadsheet, "NonExistent")
Gets a list of all custom property names.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, [property_names]}
- List of property names as strings{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, ["ProjectName", "Version", "IsApproved"]} = UmyaSpreadsheet.DocumentProperties.get_custom_property_names(spreadsheet)
Gets the document description.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, description}
- The document description as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Sales data for Q4"} = UmyaSpreadsheet.DocumentProperties.get_description(spreadsheet)
Gets the document keywords.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, keywords}
- The document keywords as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "sales, data, analysis"} = UmyaSpreadsheet.DocumentProperties.get_keywords(spreadsheet)
Gets the document last modified by.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, last_modified_by}
- The last modified by as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Jane Smith"} = UmyaSpreadsheet.DocumentProperties.get_last_modified_by(spreadsheet)
Gets the document manager.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, manager}
- The document manager as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Bob Johnson"} = UmyaSpreadsheet.DocumentProperties.get_manager(spreadsheet)
Gets the document modified date.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, modified}
- The modified date as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "2024-05-15T12:30:00Z"} = UmyaSpreadsheet.DocumentProperties.get_modified(spreadsheet)
Gets the document subject.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, subject}
- The document subject as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "Financial Analysis"} = UmyaSpreadsheet.DocumentProperties.get_subject(spreadsheet)
Gets the document title.
Parameters
spreadsheet
- The spreadsheet struct
Returns
{:ok, title}
- The document title as a string{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, "My Spreadsheet"} = UmyaSpreadsheet.DocumentProperties.get_title(spreadsheet)
Checks if a custom property exists.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the property to check
Returns
{:ok, true}
if the property exists{:ok, false}
if the property doesn't exist{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
{:ok, true} = UmyaSpreadsheet.DocumentProperties.has_custom_property(spreadsheet, "ProjectName")
{:ok, false} = UmyaSpreadsheet.DocumentProperties.has_custom_property(spreadsheet, "NonExistent")
Removes a custom document property.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom property to remove
Returns
:ok
on success (even if property didn't exist){:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.remove_custom_property(spreadsheet, "ProjectName")
Sets the document category.
Parameters
spreadsheet
- The spreadsheet structcategory
- The category to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_category(spreadsheet, "Business")
Sets the document company.
Parameters
spreadsheet
- The spreadsheet structcompany
- The company name to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_company(spreadsheet, "Acme Corp")
Sets the document created date.
Parameters
spreadsheet
- The spreadsheet structcreated
- The created date to set (ISO 8601 format recommended)
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_created(spreadsheet, "2024-01-01T00:00:00Z")
Sets the document creator.
Parameters
spreadsheet
- The spreadsheet structcreator
- The creator name to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_creator(spreadsheet, "John Doe")
Sets a custom document property with automatic type detection.
This is a convenience function that automatically calls the appropriate type-specific function based on the value type.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom propertyvalue
- The value to set (string, number, or boolean)
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property(spreadsheet, "ProjectName", "Project Alpha")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property(spreadsheet, "Version", 1.5)
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property(spreadsheet, "IsApproved", true)
Sets a custom document property with a boolean value.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom propertyvalue
- The boolean value to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_bool(spreadsheet, "IsApproved", true)
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_bool(spreadsheet, "IsPublic", false)
Sets a custom document property with a date value.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom propertyvalue
- The date value as a string (ISO 8601 format recommended)
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_date(spreadsheet, "ReleaseDate", "2024-12-31T00:00:00Z")
Sets a custom document property with a numeric value.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom propertyvalue
- The numeric value to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_number(spreadsheet, "Version", 1.5)
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_number(spreadsheet, "Count", 42)
Sets a custom document property with a string value.
Parameters
spreadsheet
- The spreadsheet structproperty_name
- The name of the custom propertyvalue
- The string value to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_custom_property_string(spreadsheet, "ProjectName", "Project Alpha")
Sets the document description.
Parameters
spreadsheet
- The spreadsheet structdescription
- The description to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_description(spreadsheet, "Sales data for Q4")
Sets the document keywords.
Parameters
spreadsheet
- The spreadsheet structkeywords
- The keywords to set (typically comma-separated)
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_keywords(spreadsheet, "sales, data, analysis")
Sets the document last modified by.
Parameters
spreadsheet
- The spreadsheet structlast_modified_by
- The last modified by name to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_last_modified_by(spreadsheet, "Jane Smith")
Sets the document manager.
Parameters
spreadsheet
- The spreadsheet structmanager
- The manager name to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_manager(spreadsheet, "Bob Johnson")
Sets the document modified date.
Parameters
spreadsheet
- The spreadsheet structmodified
- The modified date to set (ISO 8601 format recommended)
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_modified(spreadsheet, "2024-05-15T12:30:00Z")
Sets multiple document properties at once.
Parameters
spreadsheet
- The spreadsheet structproperties
- A map of property names to values
Returns
:ok
on success{:error, reason}
on first failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
properties = %{
title: "My Report",
description: "Monthly sales report",
creator: "John Doe",
company: "Acme Corp"
}
:ok = UmyaSpreadsheet.DocumentProperties.set_properties(spreadsheet, properties)
Sets the document subject.
Parameters
spreadsheet
- The spreadsheet structsubject
- The subject to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_subject(spreadsheet, "Financial Analysis")
Sets the document title.
Parameters
spreadsheet
- The spreadsheet structtitle
- The title to set
Returns
:ok
on success{:error, reason}
on failure
Examples
{:ok, spreadsheet} = UmyaSpreadsheet.read_file("input.xlsx")
:ok = UmyaSpreadsheet.DocumentProperties.set_title(spreadsheet, "My Spreadsheet")