#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 = _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 }