Here is an example how to do authentication in google analytics. This example was written not by me (author is Mikael Thuneberg), I just would like to share it here as well, because this example helped me a lot.
There are many example in web with VBA example to get data from Google Analytics (I work on that topic as well).
Public Function getGAauthenticationToken(email As String, password As String)
'Fetches GA authentication token, which can then be used to fetch data with the getGAdata function
'Created by Mikael Thuneberg
Dim objhttp As Variant
Dim authToken As Variant
Dim URL As String
Dim tempAns As String
Dim authResponse As String
Dim ch As String
Dim CurChr As Integer
Dim authTokenStart As Integer
If email = "" Then
getGAauthenticationToken = ""
Exit Function
End If
If password = "" Then
getGAauthenticationToken = "Input password"
Exit Function
End If
'hex password
CurChr = 1
Do Until ((CurChr - 1) = Len(password))
ch = Mid(password, CurChr, 1)
Select Case Asc(ch)
Case 48 To 57, 65 To 90, 97 To 122
tempAns = tempAns & Mid(password, CurChr, 1)
Case 32
tempAns = tempAns & "%" & Hex(32)
Case Else
tempAns = tempAns & "%" & Format(Hex(Asc(Mid(password, CurChr, 1))), "00")
End Select
CurChr = CurChr + 1
Loop
password = tempAns
'/
On Error GoTo errhandler
' authentication
Set objhttp = CreateObject("MSXML2.ServerXMLHTTP")
URL = "https://www.google.com/accounts/ClientLogin"
objhttp.Open "POST", URL, False
objhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objhttp.send ("accountType=GOOGLE&Email=" & email & "&Passwd=" & password & "&service=analytics&Source=tool-1.0")
authResponse = objhttp.responseText
If InStr(1, authResponse, "BadAuthentication") = 0 Then
authTokenStart = InStr(1, authResponse, "Auth=") + 4
authToken = Right(authResponse, Len(authResponse) - authTokenStart)
getGAauthenticationToken = authToken
Else
getGAauthenticationToken = "Authentication failed"
End If
basta:
Exit Function
errhandler:
getGAauthenticationToken = "Authentication failed"
Resume basta
End Function
Here is another example, it gets real data from Google Analytics.
Thursday, December 17, 2009
Wednesday, December 16, 2009
Use JSMin when do web developing
I started to use JSLint and JSMin just couple weeks ago but now I have to say that everybody must use it.
Today I used JSMin and I have to say that In my case it saves ~22% of space (original size was 28kb and after minimization it was 22kb).
So, now when you are ready to put your JS libraries to productive server, use JSMin always! It is really cool (at least I think so :) )
JSLint
http://www.jslint.com/
JSMin
http://www.crockford.com/javascript/jsmin.html
Today I used JSMin and I have to say that In my case it saves ~22% of space (original size was 28kb and after minimization it was 22kb).
So, now when you are ready to put your JS libraries to productive server, use JSMin always! It is really cool (at least I think so :) )
JSLint
http://www.jslint.com/
JSMin
http://www.crockford.com/javascript/jsmin.html
Sunday, December 13, 2009
Create PDF / FDF in Lotus Notes using LS
I had task where I should create PDF file from template and fill fields by values from documents
So what did I do?
I spoke with my colleagues :-) they recommended to use FDF Toolkit For Windows, instead of iText approach that I used before, and I have to say that it is very cool approach, it is much better at least for me. Instead of generation new PDF file we just export data to FDF file and link it with PDF template and that's all, so our FDF will show data using PDF form/template. -> No Java required and now no non-supported libraries.
Here is an instruction how to do this:
- register FDFACX.DLL (in order to do that, I copied FdfTk.dll and FDFACX.DLL to windows\system32, but I believe there is better way)
regsvr32 C:\WINDOWS\system32\FDFACX.dll
- example of code now (it is from Adobe)
Using the FDF tooklit in LotusScript
Sub Initialize
'
' Set up for using the FDF Toolkit for ActiveX
'
Dim FdfAcX As Variant
Dim outputFDF As Variant
Dim sPdfFileName As String, sFdfFileName As String, sFilePath As String
Set FdfAcX = CreateObject("FdfApp.FdfApp")
Set outputFDF = FdfAcX.FDFCreate()
'
' % REM
'
' Change these paths to reflect your server environment
' Ideally, you could use a Lotus Notes profile document to store this
' information.
'
' Below are the three options for storing the PDF that was discussed in
' the documentation for this application.
'
' Option 1 : UNC Directory Share
' This option oddly asks if you would like to save on close.
'
' sPdfFileName = "\\Mage\domdata\domino\html\pdf\panarama.pdf"
'
' Option 2 : Store in a Lotus Notes Page element
'
sPdfFileName = "http://mage/pdf/panarama.nsf/PDFs/$file/panarama.pdf"
'
' Option 3 : Store in the Domino HTML directory
'
' REM %
'
' sPdfFileName = "http://mage/pdf/panarama.pdf"
sFilePath = "d:\domdata\domino\html\pdf\tmp\"
'
' Set up for getting Lotus Notes information
'
Dim session As New NotesSession
Dim contextDoc As NotesDocument
Dim dateTime As NotesDateTime
Dim tempNumber As Single
Dim rounded As Integer
Dim fileName As String
Set contextDoc = session.documentContext
'
8 Integrating Adobe Acrobat FDF
with Lotus Domino
' This will create a random number between 0 and 100.
' The number will give
' us a good chance of not temporarily having the same file name in the tmp
' directory at the same time. The file will briefly be in the tmp
' directory,
' attached to the Notes document and then deleted.
'
Randomize
temp = Rnd
rounded = Round((temp * 100), 0)
fileName = Cstr(rounded)
sFdfFileName = sFilePath & fileName & ".fdf"
'
' FDFSetValue will set the value you pass it. See page 139 of the
' FDF Toolkit Overview and Reference.
'
outputFDF.FDFSetValue "FirstName", contextDoc.FirstName(0), False
outputFDF.FDFSetValue "MidInit", contextDoc.MidInit(0), False
outputFDF.FDFSetValue "LastName", contextDoc.LastName(0), False
'
' Get the value of the date fields. The DateOnly property
' returns a string.
'
Set dateTime = New NotesDateTime( contextDoc.HireDate(0) )
outputFDF.FDFSetValue "HireDate", dateTime.DateOnly, False
Set dateTime = New NotesDateTime( contextDoc.ModDate(0) )
outputFDF.FDFSetValue "ModDate", dateTime.DateOnly, False
'
outputFDF.FDFSetValue "Address1", contextDoc.Address1(0), False
outputFDF.FDFSetValue "Address2", contextDoc.Address2(0), False
outputFDF.FDFSetValue "City", contextDoc.City(0), False
outputFDF.FDFSetValue "State", contextDoc.State(0), False
outputFDF.FDFSetValue "ZipCode", contextDoc.ZipCode(0), False
outputFDF.FDFSetValue "Country", contextDoc.Country(0), False
'
outputFDF.FDFSetValue "MAddress1", contextDoc.MAddress1(0), False
outputFDF.FDFSetValue "MAddress2", contextDoc.MAddress2(0), False
outputFDF.FDFSetValue "MCity", contextDoc.MCity(0), False
outputFDF.FDFSetValue "MState", contextDoc.MState(0), False
outputFDF.FDFSetValue "MZipCode", contextDoc.MZipCode(0), False
'
outputFDF.FDFSetValue "HomePhone", contextDoc.HomePhone(0), False
outputFDF.FDFSetValue "WorkPhone", contextDoc.WorkPhone(0), False
'
outputFDF.FDFSetValue "Emer1Contact", contextDoc.Emer1Contact(0), False
outputFDF.FDFSetValue "Emer1Phone", contextDoc.Emer1Phone(0), False
outputFDF.FDFSetValue "Emer2Contact", contextDoc.Emer2Contact(0), False
outputFDF.FDFSetValue "Emer2Phone", contextDoc.Emer2Phone(0), False
'
' Tell it which file we're writing to and do a save.
'
outputFDF.FDFSetFile sPdfFileName
outputFDF.FDFSaveToFile sFdfFileName
'
' Always close your open FDF files.
'
outputFDF.FDFClose
ADOBE FDF TOOLKIT
User Guide
9
'
' This will attach the FDF file we just closed to our Notes document
' and then delete it from the tmp directory.
'
Call MoveFdfToAttachment(contextDoc, sFdfFileName)
End Sub
Public Function MoveFdfToAttachment(doc As NotesDocument, fileName As
String) As Integer
'// move each attachment to a rich text field.
Dim attachItem As New NotesRichTextItem(doc, "fdfAttachment")
Dim attachObj As notesEmbeddedObject, newObjName As String
Call attachItem.EmbedObject(EMBED_ATTACHMENT, "", fileName, "")
Kill fileName
MoveFdfToAttachment = True
End Function
Related articles about creating PDF files
Thursday, December 10, 2009
How to import data from Google Analytics to LN database?
I was trying to do such thing via Java API but get errors when run it. Did anybody do such thing?
Would be really interesting to see at least example!
Would be really interesting to see at least example!
Sunday, December 06, 2009
check if Bookmark or Name is exists in Word/Excel application
I did not have tasks with export data from LN to word/excel/pdf for 1 years probably. My today's task was easy, I had to export data from LN to xml, processed it using xsl, walk through resulting xml and export everything to word/excel. Then I had to copy values from resulting xml to word/excel's temlpate using bookmarks (in excel it is names).
Here is an example how to check bookrmark/names in word/excel (because before I did not have experience with Excel's names)
excel approach I got from this link
Function NameExists(TheName as String, obj, formType as String) As Boolean
NameExists = False
Select Case formType
Case "word":
if obj.activedocument.Bookmarks.Exists(TheName) Then
NameExists = true
End If
Case "excel"
On Error Resume Next
NameExists = Len(obj.names(TheName).Name) <> 0
End Select
End Function
Here is an example how to check bookrmark/names in word/excel (because before I did not have experience with Excel's names)
excel approach I got from this link
Function NameExists(TheName as String, obj, formType as String) As Boolean
NameExists = False
Select Case formType
Case "word":
if obj.activedocument.Bookmarks.Exists(TheName) Then
NameExists = true
End If
Case "excel"
On Error Resume Next
NameExists = Len(obj.names(TheName).Name) <> 0
End Select
End Function
Subscribe to:
Posts
(
Atom
)