The ability to automate recurring functions and add them as menu options. I love that there is quite a bit of documentation provided by Google itself and even more available online at places like stack overflow. This is due to it being Java script as opposed to a custom brew of code.
Writing code. HA! I am a novice at best, but this as needs must I have muddled my way into some very helpful scripts. So with that in mind, I am not sure how qualified I am to point out flaws... what I will say is that when tying the script to a button the naming is confusing.... as one would intuitively think that you enter the name you gave the script project title; however, if you happened to have multiple scripts or renamed one of the scripts in the project, you must enter precisely the name of that script which you are tying to the button.
Take advantage of the online community and the amazing scripts that are readily available for adaptation for your needs. If you are an actual programmer and you know Java, well you don't need my recommendations... but for my fellow non-programmers this is a great way to get your feet wet.
I have been able to automate several time consuming tasks and thus freed up the equivalent of 2 full time employees... not to mention the reduction of errors and technical support needed for these functions. I am currently overhauling a major information access system from within a our SAAS CRM into Google Fusion tables via the Google Apps Script. The information is initially entered using a Google Form that I have set up as a workflow. Aside from triggering emails to facilitate and track the process of the workflow the data is entered is stored in a Google Sheet. In the past I have used a merge document option to display data and simply pasted it into the CRM. However, frequent changes to that data required Admin access to the CRM and thus consumed a lot of my time. Google Fusion tables can display that data as cards (which can be customized using html) and I can simply insert the URL to the published card in the CRM. I can allow the owner of the information access to edit their own rows within the fusion table and eliminate my need in the ongoing information update process. What Google Apps script facilitates in this situation is the automatic sync from the Google Sheet entry into the Google Fusion table upon the Google Form Submission. So there is no up front change to the process for the users, only in the ongoing maintenance portion. This has been received well because I had required a workflow form submission to be sent for all information changes, after complete adoption this will be unnecessary and they will be allowed to edit the information in Fusion Tables, which immediately updates the Fusion Card Display.