thanks for your help and thanks for the new file. I haven't touched it yet, so that I would follow your suggestions. I suppose the steps I have to take are:1) Stop the first file from accessing my heartbeat, maintenance and new install emails. So I have to deactivate it. Do I just delete it? Stop sharing it with you?2) Un-archive and un-label all the previous emails. So that they all are in the inbox in order for ther new file to pick it up, right?3) Accept the invitation to edit the new sheet and follow the OP directions, right?

At the moment I have 23 unique IDs and they are all set to send me heartbeats and 5 of them are set to do automatic maintenance and of course email me the results. While reviewing your code on the first sheet's script I saw this variable:var maintenance_button_verbage . I set this to what verbage the maintenance button has on my template (common in all tempates) which is in Greek. Same goes to the folowing variable:var maintenance_verbage . As you can see in the first sheet's script. Would that create the problem?

I would mind changing it to be frank, since I have observed that the altlang.ini is not passed every time you overwrite an ID and upload the changes (bug of the dSS?). This would mean that I would probably have to uninstall all the clients and install them again...

Anyway, I will be waiting for your answers before I do anything with the new sheet.

I realize you had reason to change the language from English to another language, but I still won't go learn how to support that. Anything other than English could be the reason it does not work, I simply don't know. I've only tested it in English and it worked fine. I will not be testing in other languages or implementing multiple language support in any way.

After some time of trying to see what is wrong with my copy of the Database, I finally managed to make it work (sort of). I had two problems.

a) the dSupportSuite menu was not showing up. Solved this by creating a new trigger that would call the onOpen function that would run every time the spreadsheet would open (someone else on this thread did the same).

b) the spreadsheet was not updating itself. By studying the triggers I found out that the update function was not working properly. The problem was that, for some reason, the update function that is triggered every 5 minutes, was only working for the first client on my spreadsheet which was is row 4. What this function does is the following -a check if the number (variable count) is higher than the total number of entries (rows) --- > If it is then "reset" the variable count to 4-a check if there is no data on the selected cell (the one on the row that has the same number as the variable - basically the clientID) ---> if that is the case "exit" assigning the count variable the value 4.-if the above statement is false (i.e. the cell in the first column and the column that has the number which is equal to the count variable has data, meaning a clientID) then three functions are called -updateCustInfo , that updates the customer info from the most recent heartbeat email -updateServices , that updates the services that have run (heartbead, maintenance, Windows Backup, Ninite etc.) -alertMaintenance , that sends an email to the clientID found to have a maintenance executed 8 days before the alert date.After that the function would exit.

So, as I said before, my problem was that the count variable was not increasing its value in order to continue to the next clientID (row) other than the row number 4. So I added a line after the alertMaintenance call which would increase the value of the variable count by 1. count++;

This was the code I used to do this. I noticed that the if controlling all that ( if (count < totalCount) ) would not run for the last row so I changed this if to ---> if (count <= totalCount) , adding the = sign to the comparison of the variables.

So this way, the update function is running every 5 minutes updating one customer at each run. The only problem that I have is that even though I have heartbeats with today's date coming in the spreadsheet will only say that the most recent one is two days ago. I also tried updating manually clientIDs via the dSupportSuite menu the result is the same. I believe this has to do with a function called dSS.mostRecent that is being called in updateServices function. This only happened yesterday so I wonder if it is my changes on the code or something Ray is trying with this dSS.mostRecent function. I also cancelled (commented out) the alertMaintenance function because I have to find a way to translate the emails first...So Ray, is there any chance to have access to the dSS.sendEmail function in order to translate the email that it outputs? I can only translate the bold pieces of the email by changing them in the code belowvar missingFix = 'open ' + app_name + ' and select "' + maintenance_button_verbage + '" from the left hand menu';

but I can't change the ones in italics.

Dear George Acer Laptop,

Our records indicate that a Maintenance Routine has not been run on your computer in the last 12 days.To correct this, open XXXXXXXXXXX and select "XXXXXXXXXXXXXXX" from the left hand menu.If this notification has been sent in error, please contact your technician or reply to this email.

Thanks,

Sorry for the long post but I was just hoping to help anyone who would have a similar problem.

A big thanks to Ray for the idea and the implementation. The code is clean and totally understandable and I would suggest all of you to take a look in order to understand this tool better. Please note that I had no Javascript or google script experience before Rays dSS database and it has given me the kick to take a good look at this scripting language. This guy deserves at least a couple of beers for his work. So Ray, give us a paypal, so we can donate a little something!

Ok, I just realised I am more blind than Stevie Wonder. After 3 months (!) of messing about with Ray's database, I realised that Ray had shared the dSS google script project with me along with the spreadsheet file. Talking about permissions? I tried to manually run a module and this is when the dSS project asked for permission to access my gmail.

Nuff said....

Sorry about all the fuss Ray...

I now have to restore the update module because now after accepting the permissions it will probably work. Can anyone please copy and paste the original version of the update module?

I'm very pleased to hear you got this worked out. Honestly I'm not sure what caused this issue but it sounds like your Google account didn't "Pick up" that my script requires gmail permissions. If you can think of which code I should add to my macro to ensure this doesn't happen with other users that would be great!

I am sorry to ask again about that but could you please reset my file once again so I can start again from scratch? See, after messing around with the code as you can see, I have problems I can't explain. The last two days for example I can see adding rows for new installs, labels the emails, but it doesn't parse the names in the spreadsheet. It's obviously something stupid I have done and I can't figure out what it is! So could you please be so kind as to help me start over?

Ok, I've got an update on the new file Ray prepared for me. Unfortunatelly I still have the known problem of only updating the first clientID on the spreadsheet.

I have run in debug mode the function update (which should update the customer info and the services and send reminder emails) and the variable count which is responsible for picking up the correct clientID based on the value inside the cell in row 1, column 1 is not increasing itself so it can get to the next clientID. It always stays with the value 4 .

Since this variable is not increasing inside the if (count < totalCount) ... and not inside the updateCustInfo nor in the updateServices nor in the alertMaintenance functions, it should change just before sheet.getRange(1, 1).setValue(count); which is the last line in this function. Otherwise the script would not proceed to the next line (ie update the next clientID). So, before I make something stupid again and mess with the code, could you guys please confirm that everybody's update function that works, increases the count variable by one so it can proceed to the next line?

When done manually everything works. Updates the customer info and the services without any problem. It is just that the automatic update (triggered every 5 minutes) doesn't.