22 * If there are more response lines than info lines. Add the missing formulae based on the 2nd row in Information (first row of data)
33 */
44function refreshData ( ) {
5- var lastResponse = getLastFormEntry ( ) ;
6- var lastCalc = getLastInformationRow ( ) ;
7- if ( lastResponse > lastCalc ) {
8- var prefs = getPreferences ( ) ;
9- var copiedRow = getRowFormulae ( prefs [ 'rowToCopy' ] ) ;
10- for ( var r = lastCalc ; r < lastResponse ; r ++ ) {
11- var infoSheet = activateSheet ( prefs [ 'targetSheet' ] ) ;
12- var rowToChange = r + 1 ;
13- copiedRow . copyTo ( infoSheet . getRange ( rowToChange + ":" + rowToChange ) ) ;
5+ if ( checkPreferencesSet ( ) )
6+ {
7+ var lastResponse = getLastFormEntry ( ) ;
8+ var lastCalc = getLastInformationRow ( ) ;
9+ if ( lastResponse > lastCalc ) {
10+ var prefs = getPreferences ( ) ;
11+ var copiedRow = getRowFormulae ( prefs [ 'rowToCopy' ] ) ;
12+ for ( var r = lastCalc ; r < lastResponse ; r ++ ) {
13+ var infoSheet = activateSheet ( prefs [ 'targetSheet' ] ) ;
14+ var rowToChange = r + 1 ;
15+ copiedRow . copyTo ( infoSheet . getRange ( rowToChange + ":" + rowToChange ) ) ;
16+ }
17+ Browser . msgBox ( lastResponse - lastCalc + " rows added." , Browser . Buttons . OK ) ;
18+ }
19+ else {
20+ Browser . msgBox ( "Nothing to refresh." , Browser . Buttons . OK ) ;
1421 }
15- Browser . msgBox ( lastResponse - lastCalc + " rows added." , Browser . Buttons . OK ) ;
1622 }
17- else {
18- Browser . msgBox ( "Nothing to refresh." , Browser . Buttons . OK ) ;
23+ else {
24+ displayOptions ( ) ;
25+ Browser . msgBox ( "You must set the source sheet, target sheet, and row to copy." , Browser . Buttons . OK ) ;
1926 }
2027}
2128
@@ -92,7 +99,7 @@ function displayOptions(){
9299 * Return user's preferences for source and target spreadsheet
93100 */
94101function getPreferences ( ) {
95- var userProperties = PropertiesService . getUserProperties ( ) ;
102+ var userProperties = PropertiesService . getDocumentProperties ( ) ;
96103 var prefs = {
97104 sourceSheet : userProperties . getProperty ( 'sourceSheet' ) ,
98105 targetSheet : userProperties . getProperty ( 'targetSheet' ) ,
@@ -105,8 +112,25 @@ function getPreferences() {
105112 * Set the user's preferences based on the function arguments
106113 */
107114function setPreferences ( source , target , row ) {
108- var userProperties = PropertiesService . getUserProperties ( )
115+ var userProperties = PropertiesService . getDocumentProperties ( ) ;
109116 userProperties . setProperty ( 'sourceSheet' , source ) ;
110117 userProperties . setProperty ( 'targetSheet' , target ) ;
111118 userProperties . setProperty ( 'rowToCopy' , row ) ;
112119}
120+
121+ /*
122+ * Returns true if all settings are set, otherwise false.
123+ */
124+ function checkPreferencesSet ( ) {
125+ var valid = true ;
126+ var settings = Array ( 'sourceSheet' , 'targetSheet' , 'rowToCopy' ) ;
127+ var i = 0 ;
128+ var props = PropertiesService . getDocumentProperties ( ) ;
129+ while ( i < settings . length && valid ) {
130+ if ( props . getProperty ( settings [ i ] ) == null ) {
131+ valid = false ;
132+ }
133+ i ++ ;
134+ }
135+ return valid ;
136+ }
0 commit comments