d3k/func.ahk
David Daily f6d0981b3b New way to process emails.csv
updated the function to use an object instead of just reading lines, added a function to write to the csv as well so I can update it without actually modifying it
2020-01-23 05:33:53 -06:00

130 lines
3.6 KiB
AutoHotkey

#SingleInstance force ; Only one instance at a time
SendMode, Input
FileEncoding, UTF-8 ; Makes sure the special characters dont break stuff
SetWorkingDir, %A_MyDocuments%\D3K ; Make sure we can find the .ahks linked below
d3k_version = 2.8 ; The current version
ini = %A_MyDocuments%\D3Ksettings.ini ; Where the settings ini is
GetDateTime(lang)
{
UTCTimestamp := A_NowUTC ; Grab the current time and date
UTCFormatStr := "yyyy-MM-dd" ; This is what we want it to look like
FormatTime, DateStr, %UTCTimestamp%, %UTCFormatStr% ; format it to make it look like the Date we want
UTCFormatStr := "H:mm' GMT'" ; The time
FormatTime, TimeStr, %UTCTimestamp%, %UTCFormatStr% ; Format the string to be better
if (lang = "en")
{
Return DateStr " at " TimeStr
}
if (lang = "de")
{
Return DateStr " um " TimeStr
}
}
GetInfo(xID) ; Accept what is passed here as the variable "xID" in the script
{
if (xID)
{
csv := FileOpen(A_MyDocuments "\Work_Docs\emails-test.csv", "r")
Loop {
ReadLine := csv.ReadLine()
Array := StrSplit(ReadLine,",")
} Until InStr(Array[1], xID)
csv.Close()
Test := {xid: Array[1], email: Array[2], name: Array[3], user: Array[4], org: Array[5]} ; Return the array so we can do {variable}.email and so on
Return Test
} Else Return false
}
SetInfo(xID, column, value)
{
StringUpper, xID, xID ;just to make sure
if (xID)
{
csv := FileOpen(A_MyDocuments "\Work_Docs\emails-test.csv", "r")
Array := []
Dealinfo := []
Loop {
ReadLine := csv.ReadLine()
Array := StrSplit(ReadLine,",")
usrid := Array[1]
Dealinfo[usrid] := {xid: Array[1], email: Array[2], name: Array[3], user: Array[4], org: Array[5]}
} Until (csv.AtEOF)
csv.Close()
Switch column
{
Case "email": Dealinfo[xID].email := value
Case "name": Dealinfo[xID].name := value
Case "user": Dealinfo[xID].user := value
Case "org": Dealinfo[xID].org := value
}
for k in Dealinfo
{
tempcsv .= Dealinfo[k].xid . "," . Dealinfo[k].email . "," . Dealinfo[k].name . "," . Dealinfo[k].user . "," . Dealinfo[k].org
}
csv := A_MyDocuments . "\Work_Docs\emails-test.csv"
FileAppend, %tempcsv%, tempcsv
FileCopy, tempcsv, %csv%, 1
FileDelete, tempcsv
Return true
} Else Return false
}
;------------------------------------------------------------------------------
; INI Manipulation that supports UTF-8
;------------------------------------------------------------------------------
ini_load(location)
{
out := {}
Loop, Read, %location%
{
RegExMatch(A_LoopReadLine, "(?<=\[).*(?=\])", _RESection) ; Matches section name
RegExMatch(A_LoopReadLine, "(?<Key>.*)=(?<Value>.*)", _) ; Key = _Key, Value = _Value
If (_RESection)
{
_RESection := StrReplace(_RESection, " ", "_")
out[_RESection]:={}
currentSection := _RESection
} Else {
If (_Value)
{
_Key := StrReplace(_Key, " ", "_")
out[currentSection][_Key] := _Value
}
}
}
Return out
}
ini_getValue(location, inSec, inKey)
{
ini_loaded := {}
ini_loaded := ini_load(location)
inSec := StrReplace(inSec, " ", "_")
inKey := StrReplace(inKey, " ", "_")
Return ini_loaded[inSec][inKey]
}
ini_writeValue(location, inKey, inValue)
{
FileRead, tempini, %location%
needle := inKey . "=.*"
replacement := inKey . "=" . inValue
tempini := RegExReplace(tempini, needle, replacement,, 1)
tempini := RegExReplace(tempini, "\R+\R", "`r`n")
WinWaitNotActive, GloVar.ini
FileAppend, %tempini%, tempini ; Append the fixed ini to a new file
FileCopy, tempini, %location%, 1 ; Copy the file over, overwriting existing contents
FileDelete, tempini ; Delete the fixed temporary ini
}