PowerShell
PowerShell
Call a JavaScript Function Returning an Array
See more JavaScript Examples
Demonstrates how to call a JavaScript function that returns an array.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# ----------------------------------------------------------------------------------
# The Javascript functions called in this example are shown at the bottom of this page.
# -----------------------------------------------------------------------------------
$sbScript = New-Object Chilkat.StringBuilder
$success = $sbScript.LoadFile("js_function_returning_array.js","utf-8")
if ($success -eq $false) {
$($sbScript.LastErrorText)
exit
}
$js = New-Object Chilkat.Js
$result = New-Object Chilkat.JsonObject
$result.EmitCompact = $false
# Call Eval to add the function to the context's global object
$success = $js.Eval($sbScript,$result)
if ($success -eq $false) {
# Examine the result for an exception.
$($result.Emit())
# Also examine the LastErrorText.
$($js.LastErrorText)
exit
}
# ------------------------------------------------------------------------------
# Call each function
$funcCall = New-Object Chilkat.JsonObject
# Create JSON specifying the function name and arguments
# The function has no arguments, so we only specify the name.
$funcCall.UpdateString("name","getDays")
$success = $js.CallFunction($funcCall,$result)
if ($success -eq $false) {
# Examine the result for an exception.
$($result.Emit())
# Also examine the LastErrorText.
$($js.LastErrorText)
exit
}
$($result.Emit())
# Output:
# {
# "type": "array",
# "value": [
# "Monday",
# "Tuesday",
# "Wednesday",
# "Thursday",
# "Friday"
# ]
# }
# Access each array value..
$count = $result.SizeOfArray("value")
$i = 0
while ($i -lt $count) {
$result.I = $i
$($result.StringOf("value[i]"))
$i = $i + 1
}
# ------------------------------------------------------------------------------
# Call the getRange(start,end) function
$funcCall.Clear()
$funcCall.UpdateString("name","getRange")
$funcCall.UpdateInt("args[0]",14)
$funcCall.UpdateInt("args[1]",21)
$success = $js.CallFunction($funcCall,$result)
$($result.Emit())
# Output:
# {
# "type": "array",
# "value": [
# 14,
# 15,
# 16,
# 17,
# 18,
# 19,
# 20,
# 21
# ]
# }
$count = $result.SizeOfArray("value")
$i = 0
while ($i -lt $count) {
$result.I = $i
$($result.IntOf("value[i]"))
$i = $i + 1
}
# ------------------------------------------------------------------------------
# Call the getEmployees() function
$funcCall.Clear()
$funcCall.UpdateString("name","getEmployees")
$success = $js.CallFunction($funcCall,$result)
$($result.Emit())
# Output:
# {
# "type": "array",
# "value": [
# {
# "id": 101,
# "name": "Alice",
# "role": "Dev"
# },
# {
# "id": 102,
# "name": "Bob",
# "role": "Manager"
# }
# ]
# }
$count = $result.SizeOfArray("value")
$i = 0
while ($i -lt $count) {
$result.I = $i
$("name: " + $result.StringOf("value[i].name"))
$("role: " + $result.StringOf("value[i].role"))
$("id: " + $result.IntOf("value[i].id"))
$("")
$i = $i + 1
}