let jsonData: any = []; //QUESTO ARRAY PUO' ESSERE DINAMICO let jsonFields: string[] = ["Field1","Field2","Field3"]; listaDiDatiDaTrasformareinJSON.forEach( (row) => { let arrayIndex: number = 0; let jsonItem: any = {}; row.forEach( (field) => { let fieldName = jsonFields[arrayIndex]; jsonItem[fieldName] = field; arrayIndex++; } ) jsonData.push(jsonItem); } );
martedì 12 maggio 2020
Come creare dinamicamente un array JSON in typeScript
Il codice è mostrato qui sotto. L'array jsonFields può essere creato dinamicamente se non si conoscono a priori i nomi dei campi (per esempio se si converte il risultato di una chiamata ad un web service).
giovedì 16 aprile 2020
Dashboard COVID-19 Italia
lunedì 16 marzo 2020
Collegare Power BI Desktop ad un Server Analysis Services in un dominio differente
Se avete il vostro Analysis Services attestato su un server in un dominio differente dal vostro, quando tentate di connettervi con Power BI Desktop avrete come risultato:
- "Timeout" se tentate la Live Connection
- "We couldn't Authenticate" se tentate la Import
La soluzione è lanciare da un Command Prompt eseguito come Amministratore il seguente script
runas /netonly /user: DOMAIN\USERNAME "C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe"
La password vi verrà chiesta contestualmente. Quanto detto vale per Power BI Desktop. Per l'app Power BI scaricata dal Microsoft Store, andrebbe eseguita come differente utente (Run as different user) fornendo le credenziali di dominio necessarie
venerdì 17 gennaio 2020
Come sistemare un campo Taxonomy che dia l’errore “The SPListItem being updated was not retrieved with all taxonomy fields” in fase di update
- Con uno script powershell creare un CSV con l'URL delle pagine contenenti il campo in questione e il valore dello stesso (un esempio è riportato in fondo a questo post)
- Rimuovere il campo dalla Document Library "Pages"
- Rimuovere il campo dai content types che lo contengono
- Cancellare la Site Column dalla site collection
- Ricrearla con lo stesso Internal Name
- Aggiungerla di nuovo tutti i Content Type interessati
- Reinserire i valori nelle pagine con uno script powershell che legga il file creato al punto 1 (lo script di inserimento lo lascio a voi, io l'ho già scritto, ma è un po' troppo corposo per inserirlo nel post)
filter Get-PublishingPages {
$pubweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($_)
$query = new-object Microsoft.SharePoint.SPQuery
$query.ViewAttributes
= "Scope='Recursive'"
$pubweb.GetPublishingPages($query)
}
$str = "https://[sitecollectionURL]"
$site = Get-SPSite -Identity $str
$web = $site.RootWeb
$web | Get-PublishingPages | select Uri, @{Name="[Display Name colonna]";Expression={$_.ListItem["[Internal Name colonna]"]}}| Export-CSV -Append "[Path File CSV]"
Script
di esportazione valori taxonomy
giovedì 2 gennaio 2020
ClientCallableSettings questi sconosciuti
Che bello utilizzare il CSOM su Sharepoint On Premise, giusto? Poche righe di Javascript e sul browser faccio tutto quello che facevo con il Server Object Model. Peccato però che il CSOM controlli prima che diritti ha l'utente e normalmente nei vostri (nostri) portali Web, l'utente è Anonimo. Così avete errori del tipo: "Error: The Method “GetItems” of the type “List” with id “{Lists’s Guid}” is blocked by the administrator on the server". In questo caso vi viene in aiuto la classe ClientCallableSetting. Con poche righe di Powershell potete abilitare l'utente anonimo ad eseguire get_items.
Se poi vi pentite della vostra decisione, potete ritornare sui vostri passi:
$web
.ClientCallableSettings.AnonymousRestrictedTypes.Remove
(
[Microsoft.SharePoint.SPList]
,
"GetItems"
)
$web
.Update()
Se poi vi pentite della vostra decisione, potete ritornare sui vostri passi:
$web
.ClientCallableSettings.AnonymousRestrictedTypes.Add
(
[Microsoft.SharePoint.SPList]
,
"GetItems"
)
$web
.Update()
giovedì 5 settembre 2019
Utilizzare Kendo React in spfx 1.8 (e pbiviz: PowerBI Visual Tools)
Kendo React è una suite di controlli basati su React della Progress (vedi qui). Per utilizzarli in una soluzione Sharepoint framework (spfx) 1.8, va seguito il tutorial a questo link. Unico accorgimento in più rispetto al tutorial: è necessario installare il typescript 3.4.2. I passi da seguire sono:
- eseguire npm install typescript@3.4.2
- eseguire npm install @microsoft/rush-stack-compiler-3.4
- sostituire tutte le occorrenze di "@microsoft/rush-stack-compiler-2.7": "^0.4.0" con "@microsoft/rush-stack-compiler-3.4": "^0.1.20"
- sostituire nel file tsconfig.json "extends": "./node_modules/@microsoft/rush-stack-compiler-2.7/includes/tsconfig-web.json" con "extends": "./node_modules/@microsoft/rush-stack-compiler-3.4/includes/tsconfig-web.json"
UPDATE: vanno installati anche i pacchetti @progress/kendo-drawing e @progress/kendo-react-data-tools, quindi
- eseguire npm install @progress/kendo-drawing
- eseguire npm install @progress/kendo-react-data-tools
UPDATE: Questo tutorial va bene anche per pbiviz. Vanno prima seguite queste linee guida. Per avere un quadro più generale di pbiviz vedere qui. La parte di modifica su tsconfig.json e package.json di rush-stack-compiler non è necessaria in pbiviz dopo averne installato il package
venerdì 9 agosto 2019
SPFX - Nel caso un pacchetto risulti outdated durante il processo di build
Capita ogni tanto che lanciando il comando gulp bundle --ship build la build non riesca perchè qualche pacchetto risulta outdated. Nel mio caso l'errore era "Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslist". In realtà il messaggio è fuorviante e spesso lanciare semplicemente npm update con il nome del pacchetto da aggiornare non risolve niente (questo a partire da npm@2.6.1, vedi qui). Il trucco consiste nell'utilizzare il parametro depth per aggiornare le dipendenza anche in pacchetti annidati molto in profondità nella gerarchia del progetto. Nel mio caso ho lanciato
npm update --depth 10 caniuse-lite browserslist e ho risolto.
npm update --depth 10 caniuse-lite browserslist e ho risolto.
Iscriviti a:
Post (Atom)