UmyaSpreadsheet.DocumentProperties (umya_spreadsheet_ex v0.7.0)

View Source

Functions 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

clear_custom_properties(spreadsheet)

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)

get_all_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",
#   ...
# }

get_category(spreadsheet)

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)

get_company(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)

get_created(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)

get_creator(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)

get_custom_properties_count(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)

get_custom_property(spreadsheet, property_name)

Gets a custom document property value by name.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_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")

get_custom_property_names(spreadsheet)

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)

get_description(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)

get_keywords(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)

get_last_modified_by(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)

get_manager(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)

get_modified(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)

get_subject(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)

get_title(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)

has_custom_property(spreadsheet, property_name)

Checks if a custom property exists.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_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")

remove_custom_property(spreadsheet, property_name)

Removes a custom document property.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_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")

set_category(spreadsheet, category)

Sets the document category.

Parameters

  • spreadsheet - The spreadsheet struct
  • category - 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")

set_company(spreadsheet, company)

Sets the document company.

Parameters

  • spreadsheet - The spreadsheet struct
  • company - 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")

set_created(spreadsheet, created)

Sets the document created date.

Parameters

  • spreadsheet - The spreadsheet struct
  • created - 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")

set_creator(spreadsheet, creator)

Sets the document creator.

Parameters

  • spreadsheet - The spreadsheet struct
  • creator - 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")

set_custom_property(spreadsheet, property_name, value)

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 struct
  • property_name - The name of the custom property
  • value - 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)

set_custom_property_bool(spreadsheet, property_name, value)

Sets a custom document property with a boolean value.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_name - The name of the custom property
  • value - 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)

set_custom_property_date(spreadsheet, property_name, value)

Sets a custom document property with a date value.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_name - The name of the custom property
  • value - 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")

set_custom_property_number(spreadsheet, property_name, value)

Sets a custom document property with a numeric value.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_name - The name of the custom property
  • value - 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)

set_custom_property_string(spreadsheet, property_name, value)

Sets a custom document property with a string value.

Parameters

  • spreadsheet - The spreadsheet struct
  • property_name - The name of the custom property
  • value - 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")

set_description(spreadsheet, description)

Sets the document description.

Parameters

  • spreadsheet - The spreadsheet struct
  • description - 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")

set_keywords(spreadsheet, keywords)

Sets the document keywords.

Parameters

  • spreadsheet - The spreadsheet struct
  • keywords - 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")

set_last_modified_by(spreadsheet, last_modified_by)

Sets the document last modified by.

Parameters

  • spreadsheet - The spreadsheet struct
  • last_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")

set_manager(spreadsheet, manager)

Sets the document manager.

Parameters

  • spreadsheet - The spreadsheet struct
  • manager - 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")

set_modified(spreadsheet, modified)

Sets the document modified date.

Parameters

  • spreadsheet - The spreadsheet struct
  • modified - 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")

set_properties(spreadsheet, properties)

Sets multiple document properties at once.

Parameters

  • spreadsheet - The spreadsheet struct
  • properties - 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)

set_subject(spreadsheet, subject)

Sets the document subject.

Parameters

  • spreadsheet - The spreadsheet struct
  • subject - 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")

set_title(spreadsheet, title)

Sets the document title.

Parameters

  • spreadsheet - The spreadsheet struct
  • title - 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")