MD5 Hash function in excel without using VBA - excel

I need a function that will take an entire cell value in Excel and convert the value into its MD5 hash equivalent in a new cell.
Is there a formula in excel that does that? I need a solution that doesn't use VBA. Is this possible?

Without VBA is possible to use webservice formula that invoke a webservice that return the md5sum.
Explanation
=WEBSERVICE(B4)
Result: 89374b6dda3bb0e16132b21fb9887f1d
=CONCAT("https://md5sum.herokuapp.com/?text=";ENCODEURL(B3))
Result: https://md5sum.herokuapp.com/?text=bruno%20tafarelo
B3 cells contains the text to be coded
Value: bruno tafarelo
This web service was developed by me as all the services on internet require a POST method and Excel is only able to perform GET request. It's hosted in a free service and I don't know for how long it will be available.
Web service source code: https://github.com/btafarelo/md5sum

Related

Microsoft Excel 2013 - WEBSERVICE and FILTERXML formulas

Trying to pull the Manufacturing cost index from an XML pull. The XML comes from https://api.eve-industry.org/system-cost-index.xml?name=Osmon
I successfully used the WEBSERVICE function in excel to create and pull the data;
P28 = =CONCATENATE("http://api.eve-industry.org/system-cost-index.xml?name=",Q28)
=WEBSERVICE(P28)
My question is, how do I used FILTERXML to pull just the Manufacturing data?
So far I have
=FILTERXML(P29,"//Manufacturing")
But it only returns a #VALUE! error. I have also tried a bunch of other ways.
I'm pretty new to this also, but it seems you want to pull out the attribute of the activity whose name is Manufacturing
So the xpath expression would be //activity[#name="Manufacturing"]
or maybe
//solarsystem/activity[#name='Manufacturing'] depending on how specific you need to be.
Both work fine on your link.

Get datatype of each column in google spreadsheet

I am using the google sheets APIs for node js
https://developers.google.com/sheets/api/quickstart/nodejs
How can we access the datatype(number, decimal, string, date) of a column
in google spreadsheet using the above APIs?
There is no direct instruction from Sheets API aside from the Reading values in Spreadsheet guide. When you obtain the value of the cell assign it to a variable and make use of typeof Javascript function.
You may also try to make use of getNumberFormats but this time using Google Apps Script. Those are the possible ways I can think of.

How to add timestamp directly to the cell that I just filled/edited in google sheet

I would like to ask that is it possible to add the timestamp directly to all the cells that I just filled/edited in google sheet. For example, I just added some contents to the cell A1, like: Hello, then what I expect displaying in the cell A1 is something like: Hello - 20.05.2016 00:50.
Are there having some ideas? :D
Thank you
The easiest way of doing this is through using Apps Script, rather than the Sheets API. Create a script attached to the spreadsheet, and define an onEdit() method. This method fires whenever cells in the sheet are edited. The method can get the edited value from the trigger event, create and append a timestamp, and then fill the cell with the timestamp value.
Using the Sheets API instead would likely require some kind of polling of the sheet, looking for changes and taking action when they are found. It is possible, but is likely more complex and less efficient than the Apps Script solution.

Calling a webservice URI from excel sheet cell

I need to call a webservice URI from an Excel cell. I know this can be done using the in-built WEBSERVICE function. However, passing the parameters on the fly to the URI can be a bit tedious.
For.eg. my webservice URI is :
http://localhost/getEmployeeSalary?emloyeeName=MisterFoo&employeeId=101
The values MisterFoo and 101 are pulled from other cells in the sheet.
So what I am looking for is to call the service like an Excel function (SUM, AVG, etc.), which would look like
=getEmployeeSalary(A2,B4)
where A2 cell contains MisterFoo and B4 cell contains 101.
For now, I have tried looking for a solution but the only thing that comes up is using ribbons (Excel Add-in project in Visual Studio) that take parameters and store the value in a pre-defined cell. This is not what I am looking for though.
Any help or suggestion would be appreciated. Thanks in advance!
you could potentially use a user defined function?
https://support.office.com/en-sg/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f
You need to develop an add-in where you can run secondary threads calling web services because such operations can take a lot of time get results. See Walkthrough: Creating Your First Application-Level Add-in for Excel for more information.
I do this all the time using the Excel Concatenate function.
=WEBSERVICE(CONCATENATE("http://localhost/getEmployeeSalary?emloyeeName=",A2,"MisterFoo&employeeId=",B4))
You can use the Evaluate Formula option from the Formulas menu item to step through the function.
Hey guys I really appreciate your help. This is what I was looking for: http://blogs.msdn.com/b/eric_carter/archive/2004/12/01/writing-user-defined-functions-for-excel-in-net.aspx

Check for array formula within a macro-style Excel UDF

I'm using Excel-DNA to create UDFs within Excel and NetOffice for version-independent automation calls. Within a macro-type function, I'm able to use the following to get the formula from a cell:
ExcelReference cellRef; // of course in reality this is assigned
var formula = (string)this.excelCall(XlCall.xlfGetFormula, cellRef);
Additionally though, I'd like to know whether this is part of an array formula, and if so what its extent is. Using Excel automation, I can use something like:
Range("A1").HasArray
Range("A1").CurrentArray.Address
However, Microsoft discourage the use of automation within UDF calls: https://support.microsoft.com/en-us/kb/301443
So, is there a way to get the the HasArray and CurrentArray properties via the C API, or does anyone know if it's okay (in the context of a UDF declared as macro-type) to use automation?
The GET.CELL information function, with information type_num 49 will return whether the cell is part of an array. From your Excel-DNA (macro-type) function:
bool isArray = (bool)XlCall.Excel(XlCall.xlfGetCell, 49, cellRef);

Resources