Office Scripts
435 TopicsIssues with Power Automate Scripts in Excel
I'm using Power Automate to run scripts in Excel. In my flow, I created a new Excel file and populated it with data from two other Excel files. After that, I ran a script to add a table to copied data, followed by another script to perform operations on that data. However, I'm encountering some issues: 1. Occasionally, I receive a response with status code 423 and a message indicating that the file is locked for shared use by the user. 2. Other times, I get a response with status code of 200, suggesting the script executed successfully, but it doesn't find any data for operation, even though data is present, which was added in the previous step. Interestingly, when I ran the same script directly from the Excel interface, it produces the expected results. Can anyone help me understand why this is happening and how I can resolve these issues?294Views1like4CommentsVBA to Office Script Help
Hello, I have a VBA written that performs my task as intended. However this xlsm file needs to be sharable and edited by multiple people over Teams. As you all know, VBAs wont work using the browser or teams version of excel. I have been unable to find away reliable way to get the excel document to open in the native desktop app for all users who wish to edit the document, so now I am here hoping that an office script can be written which completes the same task as the VBA thus making it unnecessary for the user to have to open the excel file in a desktop app. Alternatively, if there is an office script that could be created that would, upon opening of the teams/web browser excel open the document in the native app as well, that would solve the issue also. Please take a look and let me know if it is even possible, thank you: Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim sID As String, oTab As ListObject, rngVis As Range Const KEYWORD = "Discontinued" Const UID = "Unique ID" Const DEST_SHT = "Archived_CVL" With Target If .CountLarge = 1 Then If .Column = 9 And .Row > 3 Then If (Not .ListObject Is Nothing) And StrComp(KEYWORD, .Value, vbTextCompare) = 0 Then Set oTab = .ListObject sID = Me.Cells(.Row, 1).Value 'Debug.Print sID If oTab.AutoFilter.FilterMode Then oTab.AutoFilter.ShowAllData oTab.Range.AutoFilter Field:=1, Criteria1:=sID On Error Resume Next Set rngVis = oTab.DataBodyRange.SpecialCells(xlCellTypeVisible) On Error GoTo 0 If Not rngVis Is Nothing Then With Sheets(DEST_SHT) rngVis.Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1) End With Application.EnableEvents = False oTab.AutoFilter.ShowAllData rngVis.Delete Application.EnableEvents = True End If End If End If End If End With End Sub Thanks again2KViews1like5CommentsRun an OfficeScript via a Button
Is it possible to use Office Scripts in a way that ANY user of a workbook can run the script? I followed the instructions (https://support.microsoft.com/en-us/office/sharing-office-scripts-in-excel-226eddbc-3a44-4540-acfe-fccda3d1122b) to allow users of my workbook to run the scripts via a button. I'm experiencing two issues: After emailing the file to my client (at another organization), they receive the following error when attempting to click the button: "RUN STATUS: The button cannot run because the script was unshared. Contact the owner to share it again." - this is happening even though my settings for the script correctly show "Everyone with access to this workbook can run this script here." Users with a personal Microsoft 365 account cannot initiate the button action at all. As best I can tell, this is because Office Scripts are limited to the business or education subscriptions. How can I keep the automation in this workbook, but make it available to any of my customers that would use the document? This needs to be something I can email out to an individual, and that they can execute at the click of a button.2.7KViews1like3Comments"You cannot perform the requested operation.", code: "AccessDenied", method: "addTable", line: 9}
The following is my code in excel under the automate tab which when ran in a workbook with a sheet called "STU Chassis" regardless of the data contained gives this error {message:"You cannot perform the requested operation.",code:"AccessDenied",type:"Workbook",method:"addTable",line:9} How can I fix this? functionmain(workbook:ExcelScript.Workbook){ try{ //SetstheActiveWorksheettothechassisworksheetintheworkbook letstuChassis=workbook.getWorksheet("STUChassis"); //Getusedrangeofpreviouslymentionedworksheet letstuChassisUsed=stuChassis.getUsedRange() console.log(stuChassisUsed) //Addanewtable letstuchassisNew=workbook.addTable(stuChassisUsed,true); stuchassisNew.setName("STUChassisTable") }catch(error){ console.log("TherearealreadytablespresentinSTUchassis"); console.log(error); } return; }2.5KViews1like6CommentsExcel script run with error since today (Range Delete)
I have a script that manipulates an excel table by deleting columns and adding new ones. The script that yesterday worked correctly today stops working and i get these errors: Range delete: You cannot perform the requested operation. Range insert: You cannot perform the requested operation. To be sure I tried the example script from the manual: /** * This sample creates a sample range, then deletes * "A1" using different DeleteShiftDirection values. */ function main(workbook: ExcelScript.Workbook) { // Add sample data to better visualize the delete changes. const currentSheet = workbook.getActiveWorksheet(); currentSheet.getRange("A1:D4").setValues([ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]); // Delete A1 and shift the cells from the right to fill the space. // The value being deleted is 1. currentSheet.getRange("A1").delete(ExcelScript.DeleteShiftDirection.left); // Delete A1 and shift the cells from the bottom to fill the space. // The value being deleted is 2. currentSheet.getRange("A1").delete(ExcelScript.DeleteShiftDirection.up); // Log the sample range. The values should be: /* 5, 3, 4, "", 9, 6, 7, 8, 13, 10, 11, 12, "", 14, 15, 16 */ console.log(currentSheet.getRange("A1:D4").getValues()); } And I got the same error. Maybe someone knows what happened from yesterday and how to solve it.Solved3KViews1like16CommentsCLOUDBASIERTE INFORMATIONSSYSTEME – DKV MOBILITY
Einleitung In diesem Blogbeitrag geht es um ein Projekt zwischen der DKV Mobility und der FH Aachen. Das Projekt wurde von Studenten der FH Aachen mit Unterstützung von Microsoft-Projektpartnern realisiert. Im Rahmen unseres Moduls „Cloudbasierte Informationssysteme“, das von unserem Prof. Dr. Christian Drumm gehalten wurde, hatten wir die Gelegenheit, mit der DKV Mobility an einem Integrationsprojekt zu arbeiten. Die Integration erfolgte über Power Automate Desktop von Microsoft. Wer ist die dkv? Die DKV Mobility Holding GmbH ist Europas Marktführer für Premiumservices rund um die Unterwegsversorgung und Mobilität von Lkw- und Pkw-Flotten. Sie liefert intelligente Lösungen von höchster Qualität, die zuverlässig helfen günstig zu tanken, mobil zu bleiben und effizient zu arbeiten. Immer getreu der Unternehmens-Philosophie: "You drive, we care.". Was war unsere Aufgabe? Ziel des Projekts: Als Datenvalidierer sollen alle verfügbaren Daten in einem strukturierten Format von verschiedenen Datenquellen an das Unternehmen (DKV) geliefert werden, damit die Informationen in einem späteren Schritt mit den Daten aus den anderen Quellen verglichen werden können. Die Entwickler, die die Validierungsfunktion erstellen, müssen die Daten aus den Datenquellen in einem strukturierten Format haben. Die Software sollte zu Webseiten (Quellen) gelangen, das jeweilige Unternehmen öffnen und alle verfügbaren Daten extrahieren. Lassen Sie uns die anstehende Aufgabe etwas genauer aufschlüsseln, damit Sie einen klaren Überblick darüber bekommen, was wir tun mussten und worum es bei diesem Projekt im Detail geht. Projektablauf / Meilensteine Als erstens haben wir verschiedene Quellen identifiziert, bei denen Daten von Unternehmen extrahieren werden könnten. Die Daten sollten mithilfe von Web-Crawlern oder anderen Skripten extrahiert werden. Danach wurde der Prozess entwickelt, um den gesamten Vorgang abzubilden. Es wurde eine Datenstrukturdefinition erstellt, um die Form der Daten zu bestimmen, die an die API der DKV geschickt werden sollten. Dazu sollte noch ein Algorithmus entwickelt werden, um die Priorisierung von Daten aus verschieden Quellen zu regeln. Das alles sollte in ein Framework eingebaut werden und automatisiert funktionieren. Die Datenextraktion haben wir jeweils mithilfe von Python-Skripten und Office-Scripts realisiert. Um alles miteinander zu verbinden wurde Power Automate genutzt. Hierbei haben die Office-Scripts lediglich mit der Web-Version von Power Automate funktioniert und die Python Skripte nur mit der Desktop Version. Letzteres war unsere Finale Lösung. Das ganze wurde mittels einer Webanwendung und Power-Automate Flows entwickelt und konfiguriert. Obwohl sie nicht in unserer finalen Version enthalten sind, werden im nächsten Abschnitt die Office-Scripts aufgegriffen und deren Funktionen veranschaulicht. Was sind Office-Scripts? In Microsoft Excel sind Office-Skripts integriert, um die Automatisierung von Aufgaben zu vereinfachen. Dabei können Benutzer Skripte schreiben, um Aufgaben in Excel automatisch auszuführen. Beispiele für solche Aufgaben sind Datenüberprüfung, Automatisierung von Formatierungen oder Integration aus verschiedenen Quellen. Auf Office-Skripts kann man ganz einfach zugreifen, indem man bei Excel auf den Tab Automatisieren klickt. Wenn dieser bei der Web-Version von Excel nicht aufzufinden ist, kann dies daran liegen, dass man für die Seite noch die webseitenübergreifenden Cookies aktivieren muss. Unter diesem Tab finden sich einige Funktionen. Einerseits kann man einfach ein neues Skript anlegen oder sich die bisher erstellen Skripte anzeigen lassen. Diese werden in einem Unterordner bei OneDrive for Business gespeichert. Einzigartig hier ist allerdings das Tool „Aktionen aufzeichnen“. Aktiviert man dies, so werden alle Benutzeraktionen wie beispielsweise das Ändern von Werten einer Zelle, Formatierungen oder das Einfügen von Diagrammen aufgezeichnet. Das wollen wir kurz an einem Beispiel veranschaulichen. Hier haben wir eine Tabelle, die zu verschiedenen Tagen Umsatz und Kosten enthält. Vielleicht möchten wir uns diese Daten etwas besser aufbereitet anschauen. Mit der aktivierten Aufzeichnung werden wir nun eine neue Spalte „Gewinn“ einfügen, die Formatierung ändern sowie ein Säulendiagramm erstellen, welches unsere Daten veranschaulichen soll. Wie man hier sehen kann, wurden alle Aktionen aufgezeichnet. Wenn wir nun die Aufzeichnung stoppen, können wir uns das Aufgezeichnete als Office-Script ansehen. Was hierbei ebenfalls sehr hilfreich ist, sind die Kommentare, die automatisch erzeugt werden und es dem Benutzer einfacher machen, den generierten Code zu verstehen. Bei Office-Scripts gibt es immer eine main-Funktion, die die aktuelle Excel Arbeitsmappe als Parameter entgegen nimmt. Man kann ein fertiges Skript im Anschluss auch bei anderen Arbeitsmappen ausführen, was für eine hohe Wiederverwendbarkeit sorgt. Die meisten Aktionen werden in der Art ausgeführt, dass zunächst die entsprechende Range festgelegt und für diese dann Veränderungen vorgenommen oder deren Werte ausgelesen werden. Wie auf dem Bild zu sehen ist, wurden zuerst die entsprechenden Werte in den Zellen D1 und D2 gesetzt. Hier funktionieren neben Zahlen und Strings auch Formeln mit Bezug auf andere Zellen wie üblicherweise bei Excel. Anschließend wird durch autoFill() dafür gesorgt, dass in der gesamten Spalte die Werte für den Gewinn in den Zellen errechnet werden. Danach werden auf bestimmten Ranges Formatierungen wie fetter Text oder das Zahlenformat geändert. Zum Schluss wird ein Linien-Diagramm eingefügt, welches den Gewinn nach Tagen abbildet. Haben wir nun eine zweites Arbeitsblatt, so können wir für dieses unser neu erstelltes Skript einfach ausführen und ersparen uns dadurch die manuellen Aktionen. Dies ist natürlich besonders praktisch, bei gleichen Tätigkeiten, die häufig anfallen und bislang von Mitarbeitern manuell bearbeitet werden. Wie haben wir Office-Scripts zur Lösung unseres Problems verwendet? Unsere Aufgabe bestand darin, anhand von einzelnen Daten wie Name oder Telefonnummer eines Unternehmens, mehr Informationen über dieses Unternehmen herauszufinden, diese strukturiert abzuspeichern und anschließend an die API der DKV zu schicken. Jedoch lagen bei den meisten unserer herangezogenen Quellen die relevanten Daten hinter einer Paywall oder das Webcrawling der Daten von den jeweiligen Webseiten hat nicht funktioniert. Eine Alternative, die wir hierzu gefunden haben, sind die herunterladbaren Excel-Tabellen von CompaniesData.cloud. Dort gibt es für einige europäische Länder jeweils eine Free- und eine Premium-Version einer Tabelle, die eine Reihe an Daten der Unternehmen des Landes enthält. Bei der Premium-Version gibt es zusätzliche Daten, die bei der Free-Version nicht mit enthalten sind. Wir konnten im Rahmen unseres Projektes lediglich die Free-Versionen dieser Tabellen benutzen, doch die DKV könnte die resultierte Lösung erweitern, indem sie auf die Premium-Tabellen zurückgreift. Wie kommen jetzt die Office-Scripts ins Spiel? Auch wenn unsere finale Lösung Python-Skripte benutzt, was durchaus eleganter ist, hatten wir zwischenzeitlich mit Office-Scripts gearbeitet, da man diese über Power Automate Flows ausführen kann, ohne dass man Azure-Functions dafür braucht, wie es bei Python-Skripten und der Webversion von Power Automate der Fall war. Demnach waren für uns die Office-Scripts naheliegend, da wir mit Excel-Tabellen gearbeitet haben und wir die Operationen automatisch ausführen lassen wollten. Dazu haben wir alle kostenlos zugänglichen Excel-Tabellen zunächst vorverarbeitet, indem wir diesen eine einheitliche Struktur gaben, damit das Skript sie besser durchsuchen konnte. Die Tabellen wurden auf OneDrive for Business abgelegt, so kann man sie im Web öffnen und das Office-Script entwickeln. Es gibt eine andere Datei, in der sich jeweils Unternehmensname und Telefonnummer einer Reihe von Unternehmen befinden, nach denen gesucht werden soll. Das Office-Script ist so aufgebaut, dass es diese Datei zeilenweise durchgeht und pro Unternehmen in den anderen Tabellen nach dem Namen sucht. Wird dieser gefunden, dann werden aus der Tabelle alle Daten des Unternehmens in einer Ergebnisdatei abgespeichert. Um die Laufzeit des Office-Scripts zu verbessern haben wir eingebaut, dass zunächst die Telefonnummer des Unternehmens überprüft wird. Beginnt diese mit einer Ländervorwahl eines Landes, zu dem eine Tabelle existiert, dann wird diese Tabelle nach dem Unternehmensnamen durchsucht. Gibt es keine Tabelle, die zu der Vorwahl passt, dann wird die Suche abgebrochen.625Views1like0CommentsExcel Link in word document not updating - ITEM DROPPING OFF
Hello, I am currently having an issue where our Excel Links in our Word Documents are not updating properly. Our word documents have over 500 links with our excel documents to help us with report writing. Most if not all of the links are either, Text_Link or Color_Chart_Links. We use and start with a template due to the number of links. For whatever reason, when we update our links, the Color_Chart_Link does not work. It appears (from what I can tell) that the problem is that the item is blank on the link. This has never occurred before and is a new problem. The links would always work. We do not get any error message, the link just simply does not update. The only way to work around this is by double clicking on the Color_Chart_Link which opens the excel document, and then going back into Word and updating the link again. When this happens the "Item" appears and the link works again. This method takes way to long and it is just work around. Any assistance would be appreciated. It is worth noting that this just started to occur. Maybe a month ago. Prior to that all the links worked just fine.1KViews1like1CommentLink one worksheet with another worksheet.
Is it possible to link two worksheets such that if I add/delete any row or column in the master worksheet gets updated in the other WS? I only want to add/delete rows and columns based on Master worksheet along with the formatting (like strike through, and font color). Is it possible to do.?303Views1like0CommentsHide or close the script pane when users initiate a script from a button
Hi I'm using a number of buttons to trigger excel online scripts in a shared workbook. But, I don't want the users to keep seeing the scripting pane popup every time they click a button. Anyone know of a way to close/hide the script pane when the script starts (or finishes) or prevent it from opening? Thanks Matt6.8KViews1like10CommentsSharePoint Choice Column In Excel Info Panel
Pretty sure I've come across a bug in the way SharePoint document library column data is exchanged with Excel documents stored in that library. When attempting to save SharePoint data through the Excel Info panel I get a javascript error and the data fails to save. I think this is an Excel issue rather than SharePoint because all other Office documents support this functionality and work as expected even when housed in the same SharePoint doc library. The error can reliably be reproduced by doing the following: Create a new SharePoint document library with a new column of type Choice Set display choice to: Checkboxes (allow multiple selections) Upload or create a new Excel document in the SharePoint library Open the Excel document using the desktop app Open the Info panel in the Excel doc Under the Properties section of the Info panel in Excel, click the Show Details button next to the Choice column A script error window will pop up with the message ‘Unable to set property ‘value’ of undefined or null reference’1.9KViews1like4Comments