public/Set-GoogleDriveFilePermission.ps1

<#
.SYNOPSIS
  Sets public read permissions on a Google Drive file.
 
.DESCRIPTION
  Configures a Google Drive file to be publicly accessible without authentication.
 
.PARAMETER FileId
  The ID of the Google Drive file to make public.
 
.EXAMPLE
  Set-GoogleDriveFilePermission -FileId "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
#>

function Set-GoogleDriveFilePermission {
  [CmdletBinding()]
  param(
    [Parameter(Mandatory = $true)]
    [string]$FileId,

    [Parameter(Mandatory = $true)]
    [PSCustomObject]$PermissionData
  )

  # $permissionData = @{
  # role = "reader"
  # type = "anyone"
  # } | ConvertTo-Json
  $body = $PermissionData | ConvertTo-Json -Compress

  $uri = "https://www.googleapis.com/drive/v3/files/$FileId/permissions"
    
  try {
    $result = Invoke-GApi -uri $uri -body $body
    Write-Verbose "Set-GoogleDriveFilePermission: Set public permissions for file ID: $FileId"
    return $result
  }
  catch {
    Write-Error "Failed to set public permissions on Google Drive file: $($_.Exception.Message)$([Environment]::NewLine)$($_.ErrorDetails | ConvertTo-Json -Depth 10)" -ErrorAction Stop
  }
}