CURL.SetProgressScript
----------------------

Sets the progress script.

| Component | Version | macOS | Windows | Linux | Server | iOS SDK |
|---|---|---|---|---|---|---|
| [CURL](component_CURL.md) | [5.2](newinversion52.md) | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes |

MBS( "CURL.SetProgressScript"; curl; FileName; ScriptName ) 

**MBS**( **"CURL.SetProgressScript";** /\* Sets the progress script. \*/  
**$curl**; /\* The CURL session handle. \*/   
**$FileName**; /\* The database file name where the script is located.e.g. "test.fmp12" \*/   
**$ScriptName**) /\* The script name.e.g. "MyScript" \*/ 

### Parameters

| Parameter | Description | Example |
|---|---|---|
| curl | The CURL session handle. | $curl |
| FileName | The database file name where the script is located. | "test.fmp12" |
| ScriptName | The script name. | "MyScript" |

### Result

Returns OK or error.

### Description

Sets the progress script.  
This script is called for asynchronous transfers when percent value changed.  
So you can update progress user interface.  
  
Does not work on server due to missing capability to trigger scripts in the plugin SDK with FileMaker Server.  
  
We trigger script/evaluate only if percent value changes. And we defer next invocation until you call [CURL.GetProgressCurrentDownload](CURLGetProgressCurrentDownload.md), [CURL.GetProgressCurrentUpload](CURLGetProgressCurrentUpload.md), [CURL.GetProgressPercent](CURLGetProgressPercent.md), [CURL.GetProgressTotalDownload](CURLGetProgressTotalDownload.md), and [CURL.GetProgressTotalUpload](CURLGetProgressTotalUpload.md) so script triggers don't queue up.  
  
  
With plugin version 6.0 or newer the script name can be a script ID number. In that case the plugin queries the script name for the given script ID. This allows to call scripts by ID and avoid problems if scripts are later renamed.  
  
Notice: FileMaker 19.2 adds a fmplugin extended privileges. If you have such an extended privileges to allow the plugin to trigger scripts, you need to grant permissions for it. If such a privilege is not defined, the plugin is allowed to trigger scripts. See FileMaker product documentation for details.  
### Examples

Start a curl session and setup a few scripts:

 Set Variable \[$curl ; Value:MBS ("[CURL.New](CURLNew.md)")\]  
Set Variable \[$r ; Value:MBS ("[CURL.SetFinishedScript](CURLSetFinishedScript.md)"; $curl ; Get(FileName); "DownloadFinished")\]  
Set Variable \[$r ; Value:MBS ("CURL.SetProgressScript"; $curl ; Get(FileName); "ProgressScript")\]  
### See also

- [CURL.GetProgressCurrentDownload](CURLGetProgressCurrentDownload.md)
- [CURL.GetProgressCurrentUpload](CURLGetProgressCurrentUpload.md)
- [CURL.GetProgressPercent](CURLGetProgressPercent.md)
- [CURL.GetProgressScriptName](CURLGetProgressScriptName.md)
- [CURL.GetProgressTotalDownload](CURLGetProgressTotalDownload.md)
- [CURL.GetProgressTotalUpload](CURLGetProgressTotalUpload.md)
- [CURL.New](CURLNew.md)
- [CURL.PerformAsync](CURLPerformAsync.md)
- [CURL.SetFinishedScript](CURLSetFinishedScript.md)

### Release notes

- **Version 13.1**
    - Fixed a problem with CURL.SetProgressScriptName causing a crash when transfer went too fast.
- **Version 12.2**
    - Improved [CURL.SetProgressScript](https://www.mbsplugins.eu/CURLSetProgressScript.shtml) to not fire too often.

### Example Databases

- [CURL/CURL Download in Background](https://www.mbsplugins.eu/MBS-FileMaker-Plugin-Examples/CURL/CURL%20Download%20in%20Background.shtml#1ScriptAnchor_)
- [CURL/CURL Download with Progress](https://www.mbsplugins.eu/MBS-FileMaker-Plugin-Examples/CURL/CURL%20Download%20with%20Progress.shtml#1ScriptAnchor_)
- [CURL/Download Async](https://www.mbsplugins.eu/MBS-FileMaker-Plugin-Examples/CURL/Download%20Async.shtml#1ScriptAnchor_)

### Blog Entries

- [MBS FileMaker Plugin, version 12.2pr2](https://www.mbsplugins.de/archive/2022-04-13/MBS_FileMaker_Plugin_version_1/monkeybreadsoftware_blog_filemaker)

This function is free to use.

Created 12nd July 2015 , last changed 15th February 2024

  
[CURL.SetProgressEvaluate](CURLSetProgressEvaluate.md) - [CURL.SetSSLBackend](CURLSetSSLBackend.md)

[HTML Version](CURLSetProgressScript.shtml)