The array formula is a wonderful thing in Google Sheets, in most cases providing the opportunity to enter just the one formula and have it automatically fill down as new entries appear from elsewhere.
A clever trick though is to create an array within an array, which allows for header rows to be included.
I was presented with a word document last week with a table full of names of staff and dates of their one to one meetings (who uses spreadsheets for managing this sort of thing ;)), ….”Can you make it so that an email gets sent to the supervisors when it is time for them to hold another one to one meeting with their staff?”
“Yes, of course.”
First job was to grab the data and convert it into a manageable list. Ended up with 8 columns: Name, Supervisor, Job Role, Department, Date of Meeting, Completed, Notes/Comments, date for Next Meeting. The notes were to allow for entries of reasons why the meeting could not take place, e.g. maternity leave or long term sick. There was all sorts of rubbish written in the table that wasn’t a date, people who had left and started during the year, which all had to be cleared out. Eventually got a neat set of data to play with. Continue reading
May seem like a sledgehammer to crack a nut, but I was looking for a way to satisfy two things:
- Change sheet tabs and know (script-wise) which tab I had come from and was going to
- Create a dynamic menu for sheet tab selection, so that I could get the user focused on a single tab, as opposed to having them all there along the bottom
I first tackled this the hard coded long winded way, capturing the names of all sheets and writing an individual function for each, then moved on the a pair forwards / backwards functions, using “getSheets()” to provide the sheet array. This then lead me to going all dynamic!
Started searching, and there were a couple of posts about placing parameters into custom menu items, but nothing that really cracked it, until I came upon this post:
where Václav Novotný provides a solution to create a dynamic custom menu, and dynamic scripting for functions to go with it. This was setup for a Google Doc, so I need to rework it a bit for my needs. All credit to Václav Novotný though for the meat on the bones. Continue reading
Of which there are three:
- Make life simple and do all your incron as root. I know you shouldn’t but it helps to avoid all sorts of permissions issues. You may need to create an allow file “/etc/incron.allow” and put either root or your sudo name in it.
- Ensure that you only have one “SPACE” (not a TAB) between the three elements on an incron job: e.g.
/etc/samba/smb.conf IN_MODIFY /etc/init.d/samba restart
- incron, like cron, requires full paths for just about everything, so if you are calling a script, use the full path to it, and use the full path to all programs inside the script.
Add a Label to a set of images
First bash script coming up, I’ll explain the best I can: I have a set of images that are all square: w=h. I want to create an image of each image with a label on top,using the filename as the label (without the extension), with a white background, ending up with a 200×250 image with the same name as the original but with “-tab” added. IM will by default squeeze the font size so that the text label always fits. Continue reading
Combine the command line utility with the GUI browser and you have all the tools you need in Linux to view,sync and download from your cloud storage provider.
Here is how I set it up for accessing my Google Drive on my Xubuntu machine: Continue reading
The ability to combine a set of images into one image in a variety of ways, essentially replicates the contact sheets of old. Here are a few ways to create a montage. It works best when all the images are the same height and width. IM does not understand page sizes, and will just create a simple image, regardless of the number of images, you can tell IM which images to use though. It also makes sense when testing and creating montages to save the output to a different directory, otherwise your montages will be included in the next iteration! Continue reading
It is a disgrace really! I have has this running on an ancient laptop for over three years non stop, and not written it up, even failed to write it up on #! Crunchbang forums, where I got all the help from mrpeachy, Sector11, dk75 and others. Time to put that to rights. What is different about this “one”, you ask? Well, we have two conkys running, they are both in the background, so you still have a fully functional PC if you want to use it, you get sexy rounded corners on your image and a nice big digital purple clock.
Don’t know / can’t remember exactly what happened but for some reason my proprietary Nvidia driver stopped working, I lost OpenGL, and with that a lot of functionality on the desktop. After living with it for a couple of months, and there are many different solutions to doing it, I finally got around to sorting it out like this: Continue reading
My OpenGL for my graphics has been broken for a few weeks, and I have been missing using Genymotion for my AppInventor emulator. Finally fixed the graphics (another story) and Genymotion working once again. Would like a working environment on just one desktop, so need to resize the stock setup for Genymotion and move it over to the right. Here is a little bash script that does the lot: Continue reading