BI-TV #23: Редактирование кода скриптов Power Query в VS Code - решение Ben Gribaudo
Редактирование кода скриптов Power Query в VS Code - решение Ben Gribaudo: https://bengribaudo.com/blog/2020/07/16/5356/editing-report-spreadsheet-mashups-in-vscode#more-5356
-
Устанавливаем VS Code https://code.visualstudio.com/Download. При установке ставим галку “Add to Path”.
-
В VS Code устанавливаем расширение “Power Query / M Language” (ctrl+shift+P - установить расширение - вводим название).
-
Устанавливаем PowerShell Core 7 c github: https://github.com/powershell/powershell#get-powershell.
-
Устанавливаем Data Mashup Cmdlet, для этого вводим PowerShell Core 7 команду:
Install-Module -Name DataMashup -AllowPrerelease
Если выдает ошибку - чтобы заработала возможность установки скриптов из галереи используем команду.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Решение найдено здесь.
-
В скрипте функции заменяем code на путь до VS Code на вашем компьютере:
function Edit-DataMashup { param ( [Parameter(Mandatory=$True, Position=0)] [string]$File ) $originalMashup = Export-DataMashup -Raw $File -ErrorAction Stop $tempFile = New-TemporaryFile -ErrorAction Stop try { $tempFile = Rename-Item $tempFile ($tempFile.Name + ".m") -PassThru -ErrorAction Stop $originalMashup | Out-File $tempFile -NoNewline -ErrorAction Stop Start-Process "code" "`"$($tempFile)`"" -Wait $postEditMashup = Get-Content $tempFile -Raw -ErrorAction Stop if ($originalMashup -eq $postEditMashup) { $successful = $true return } Import-DataMashup -Raw $File -Experimental -Mashup $postEditMashup -ErrorAction Stop $successful = $true } finally { if ($successful -ne $true) { Write-Error "Failed to Save Modified Power Query mashup:`r`n$($postEditMashup)" } Remove-Item $tempFile } }
-
Создаем файл Profile, чтобы положить в него функцию, чтобы после перезапуска Power Shell она была доступна
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
-
Открываем файл Profile командой ниже, вставляем в notepad функцию из шага 6, сохраняем файл.
notepad $PROFILE
-
Перезапускаем PowerShell 7
-
Редактируем код Power Query XLSX и PBI файлов в VS Code командой:
Edit-DataMashup SomeFile.xlsx
Дополнение от Ярослава Тихонова:
Открываем папку в проводнике %AppData%\Microsoft\Windows\SendTo\
Создаем текстовый файл. Название файла - это название операции, лучше выбрать что-то вроде Edit M Code. В файле прописываем текст
```
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("pwsh -command " & chr(34) & "Edit-DataMashup " & chr(39) & WScript.Arguments(0) & chr(39) & chr(34))
Set objShell = Nothing
```
Сохраняем. Закрываем. Меняем расширение на vbs.
Теперь можно щелкнуть правой кнопкой мыши и в группе Отправить будет пункт с редактированием M кода