# GSuite Unsupported Activities

> GSuite activities not supported by the Activity Migrator tool when migrating Studio automation projects.

## Unsupported activities

Refer to the tables below for the GSuite activities that are unsupported when using the **Activity Migrator** tool. These classic activities have no modern counterpart. The migrator emits an action-required **Static Analysis Results Interchange Format** (SARIF) entry and leaves the activity in the workflow.

| **Service** | **Classic Activity** |
| ---| ---|
| Apps Script | Create Deployment (`CreateScriptDeployment`)  Create Script Project (`CreateScriptProject`)  Get Project Content (`GetProjectContent`)  Upload Script File (`UploadScriptFile`) |
| Docs | Get Text Index (`GetTextIndex`)  Batch Document Updates (`BatchUpdateDocumentScope`) |
| Sheets | Copy Sheet (`CopySheet`)  Batch Spreadsheet Updates (`BatchUpdateValuesScope`)  Download Spreadsheet (`DownloadSpreadsheet`)  Get Sheets (`GetSheets`) |

## Unsupported / partially-supported properties

Properties that are **dropped** (no modern equivalent at all) or that can only be migrated **conditionally**, by activity. Any property not listed here is migrated normally.
Anything that cannot be migrated produces either a warning or an action-required entry in the SARIF report (and a corresponding annotation on the migrated activity in the `.xaml`).

### Cross-cutting

- **`ContinueOnError`** on every modern target — the modern Connection-Service activities don't expose `ContinueOnError`. The migrator logs an action required so the user can re-implement the equivalent with a TryCatch if needed.

### Calendar

- **`ModifyEvent.InstancesOption`** — only `THIS_EVENT` (or null) is supported; any other value emits an action required and the property is dropped.

### Sheets

- **`AddNewSheet.Rows` / `AddNewSheet.Columns`** — no modern equivalent; emits an action required when bound.
- **`CreateNewSpreadsheet.Rows` / `CreateNewSpreadsheet.Columns`** — same as above.
- **`AddDeleteColumns.Name`** (INSERT mode) — column-letter form cannot be auto-converted to the modern `ColumnPosition` (int); emits an action required so the user can set it manually.
- **`WriteRange.Result`** — the modern activity has no equivalent string output; emits an action required so the user can remove downstream usage.

### Drive

- **`CreateFilePermission.EmailMessage`** — `ShareFileFolderConnections` hardcodes its email body to `string.Empty` and exposes no input; the migrator drops the value with an unsupported warning.
- **`CreateFilePermission.Result`** — modern activity exposes only `AccessUrl` (string) instead of a structured `Permission` object; emits an action required.
- **`FindFiles`** search location — the modern activity requires a location and does not support "search everywhere", so the migrator hardcodes `Item.IdOrUrl = "root"` (My Drive) and emits an action required telling the user to override it if needed.

## User actions the migrator generates

Every action-required entry shows up both in the SARIF report and as an annotation on the migrated activity in the produced `.xaml`. Ordered by frequency:

| **Action-required entry** | **Description** |
| ---| ---|
| **`ContinueOnError` is unsupported.** | Emitted on virtually every migrated activity. Suggests the user wrap the activity in a TryCatch if they need the same semantics. |
| **`Result` output type changed (auto-bridged via HTTP Request).** | Emitted by `FindFiles`, `GetFileInfo`, `GetFilePermissions`, `UpdateFilePermission`, `GetCellColor`, `GetDocument`, `SearchEvents` whenever the bridge fires. Tells the user to verify the generated `HttpRequestConnections` has a connection / required scopes set up correctly. |
| **`Result` output cannot be auto-bridged.** | Same activities as above, but emitted when the source identifier is implicit and the bridge cannot run — points the user at building the `HttpRequestConnections` themselves. |
| **`FindFiles` search location.** | Tells the user the modern activity does not support "search everywhere"; the migrator defaults the search root to My Drive. |
| **`InsertText.Position = AT_INDEX`** | Modern activity does not support index-based insert; user must change the position manually. |
| **`SaveOutlookMailMessage.SaveAsType` ≠ `TextOnly`** | Same on the Mail extension; the migrator either fails the migration or honours the `SaveOutlookMailMessage_IgnoreSaveAsType` config flag. |
| **Filter migration not supported** | Emitted by `GetMailMessages`-style activities when the classic filter expression cannot be ported. |
| **`SendEmail` attachment deduplication** | The modern activity does not auto-dedupe attachments; warning only when at least one attachment is set. |
| **`AddDeleteColumns.Name`** | Column-letter form cannot be auto-converted to `ColumnPosition`. |
| **Sheets `Rows` / `Columns`** | `AddNewSheet` and `CreateNewSpreadsheet` cannot reproduce custom dimensions. |
| **`ModifyEvent.InstancesOption ≠ THIS_EVENT`** | Only `THIS_EVENT` is supported. |
| **`CreateFilePermission.Result`** | Modern activity returns `AccessUrl` instead of a structured permission. |
| **`ConnectionId` cannot be inferred** | Emitted by `UserConfiguredPropertyMigrator` when no config-file rule matches. |
