public/Add-GoogleDriveFolder.ps1

<#
.SYNOPSIS
Creates a new folder in Google Drive.
 
.DESCRIPTION
  Creates a new folder in Google Drive with the specified name.
 
.PARAMETER Name
  The name of the folder to create.
 
.PARAMETER ParentId
  Optional parent folder ID. If not specified, creates in root.
 
.EXAMPLE
  New-GoogleDriveFolder -Name "Open Live Writer"
#>

function Add-GoogleDriveFolder {
  [CmdletBinding()]
  param(
    [Parameter(Mandatory = $true)]
    [string]$Name,
        
    [Parameter(Mandatory = $false)]
    [string]$ParentId
  )

  Write-Verbose ("Creating folder '$Name' {0}" -f ($ParentId ? "in parent '$ParentId'" : "in root"))

  $metadata = @{
    name     = $Name
    mimeType = "application/vnd.google-apps.folder"
  }
    
  if ($ParentId) {
    $metadata.parents = @($ParentId)
  }

  $body = $metadata | ConvertTo-Json -Compress
  $uri = "https://www.googleapis.com/drive/v3/files"
    
  try {
    return Invoke-GApi -uri $uri -body $body -Verbose:$false
  }
  catch {
    Write-Error "Failed to create folder in Google Drive: $($_.Exception.Message)" -ErrorAction Stop
  }
}