11/**
2- * @file A snippet for .
3- * Examples of the snippet {@link https://support.google.com/docs/thread/5809954?msgid=5809954}
2+ * @file A snippet for reset the sheet/sheets data to its original state
3+ * Samples for {@link https://support.google.com/docs/thread/5809954?msgid=5809954}
44 */
55
6- /**
7- * Runs the snippet.
8- * Removes rows by condition 'B:B=10'. Appends deleted rows to the 'Archive' sheet.
9- */
10- function onOpen ( ) {
11- SpreadsheetApp . getUi ( )
12- . createMenu ( 'Reset sheet' )
13- . addItem (
14- 'Reset active sheet (ContactPrice example)' ,
15- 'userActionResetActiveSheetByRangesAddresses'
16- )
17- . addItem ( 'Reset ranges' , 'userActionResetRangesByRangesAddresses' )
18- . addItem (
19- 'Reset multiple sheets' ,
20- 'userActionResetMultipleSheetsByRangesAddresses'
21- )
22- . addItem (
23- 'Reset "GSM" columns' ,
24- 'userActionResetMultipleSheetsBySpecialColumns'
25- )
26- . addItem ( 'Reset to a specific value' , 'userActionResetToSpecificValue' )
27- . addItem ( 'Make a copy before reset' , 'userActionMakeCopyBeforeReset' )
28- . addToUi ( ) ;
29- }
30-
31- /**
32- * Clear specifing cells on the active sheet
33- */
34- function userActionResetActiveSheetByRangesAddresses ( ) {
35- var sheet = SpreadsheetApp . getActiveSheet ( ) ;
36- if ( sheet . getName ( ) !== 'ContactPrice' ) {
37- SpreadsheetApp . getActive ( ) . toast ( 'Please, activate "ContactPrice" sheet' ) ;
38- return ;
39- }
40- var rangesAddressesList = [ 'B5' , 'B7' , 'B9' , 'B11' , 'B15' , 'B19' ] ;
41- resetByRangesList_ ( sheet , rangesAddressesList ) ;
42- }
43-
44- /**
45- * Clear specifing ranges
46- */
47- function userActionResetRangesByRangesAddresses ( ) {
48- var sheet = SpreadsheetApp . getActive ( ) . getSheetByName ( 'Reset ranges example' ) ;
49- sheet . activate ( ) ;
50- var rangesAddressesList = [ 'B5:B15' , 'B19' ] ;
51- resetByRangesList_ ( sheet , rangesAddressesList ) ;
52- }
53-
54- /**
55- * Clear specifing sheets
56- */
57- function userActionResetMultipleSheetsByRangesAddresses ( ) {
58- var sheetNames = [
59- { name : 'Sheet1' , rangesAddressesList : [ 'B5:B15' , 'B19' ] } ,
60- { name : 'Sheet2' , rangesAddressesList : [ 'A1:Z20' ] } ,
61- ] ;
62- sheetNames . forEach ( function ( sn ) {
63- var sheet = SpreadsheetApp . getActive ( ) . getSheetByName ( sn . name ) ;
64- if ( sheet ) {
65- resetByRangesList_ ( sheet , sn . rangesAddressesList ) ;
66- }
67- } ) ;
68- }
69-
70- /**
71- * Clear specifing sheets by color
72- */
73- function userActionResetMultipleSheetsByColor ( ) {
74- var fColor = '#fa7d00' ;
75- var sheetNames = [
76- // { name: 'Sheet1' },
77- { name : 'Reset by color (click the image)' } ,
78- ] ;
79- sheetNames . forEach ( function ( sn ) {
80- var sheet = SpreadsheetApp . getActive ( ) . getSheetByName ( sn . name ) ;
81- if ( sheet ) {
82- var rangesAddressesList = sheet
83- . getDataRange ( )
84- . getFontColors ( )
85- . reduce ( function ( p , row , i ) {
86- var colors = row . reduce ( function ( p2 , color , j ) {
87- if ( color === fColor )
88- p2 . push ( Utilities . formatString ( 'R%sC%s' , i + 1 , j + 1 ) ) ;
89- return p2 ;
90- } , [ ] ) ;
91- if ( colors . length ) p = p . concat ( colors ) ;
92- return p ;
93- } , [ ] ) ;
94- if ( rangesAddressesList . length )
95- resetByRangesList_ ( sheet , rangesAddressesList ) ;
96- }
97- } ) ;
98- }
99-
100- /**
101- * Cleaning the sheet and special columns
102- */
103- function userActionResetMultipleSheetsBySpecialColumns ( ) {
104- SpreadsheetApp . getActive ( )
105- . getSheets ( )
106- . forEach ( function ( sheet ) {
107- var lastRow = sheet . getLastRow ( ) ;
108- var rangesAddressesList = sheet
109- . getRange ( '2:2' )
110- . getValues ( ) [ 0 ]
111- . reduce ( function ( p , cell , i ) {
112- if ( cell === 'GSA' )
113- p . push (
114- Utilities . formatString ( 'R3C%s:R%sC%s' , i + 1 , lastRow , i + 1 )
115- ) ;
116- return p ;
117- } , [ ] ) ;
118- if ( rangesAddressesList . length ) {
119- sheet . activate ( ) ; // Please remove this
120- resetByRangesList_ ( sheet , rangesAddressesList ) ;
121- }
122- } ) ;
123- }
124-
125- /**
126- * Reset to specific values
127- */
128- function userActionResetToSpecificValue ( ) {
129- var sheet = SpreadsheetApp . getActiveSheet ( ) ;
130- if ( sheet . getName ( ) !== 'ContactPrice' ) {
131- SpreadsheetApp . getActive ( ) . toast ( 'Please, activate "ContactPrice" sheet' ) ;
132- return ;
133- }
134- var rangesAddressesList = [ 'B5' , 'B7' , 'B9' , 'B11' , 'B15' , 'B19' ] ;
135- resetByRangesListToValue_ ( sheet , rangesAddressesList , 'CLEARED' ) ;
136- }
137-
1386/**
1397 * Clear the sheet by the range list
1408 * @param {GoogleAppsScript.Spreadsheet.Sheet } sheet The sheet
141- * @param {Array.<string> } rangesAddressesList The list of ranges to return, as specified in A1 notation or R1C1 notation.
9+ * @param {Array.<string> } rangesAddressesList The list of ranges to return,
10+ * as specified in A1 notation or R1C1 notation.
14211 */
14312function resetByRangesList_ ( sheet , rangesAddressesList ) {
14413 sheet . getRangeList ( rangesAddressesList ) . clearContent ( ) ;
@@ -147,7 +16,8 @@ function resetByRangesList_(sheet, rangesAddressesList) {
14716/**
14817 * Reset the sheet by the range list to a value
14918 * @param {GoogleAppsScript.Spreadsheet.Sheet } sheet The sheet
150- * @param {Array.<string> } rangesAddressesList The list of ranges to return, as specified in A1 notation or R1C1 notation.
19+ * @param {Array.<string> } rangesAddressesList The list of ranges to return,
20+ * as specified in A1 notation or R1C1 notation.
15121 */
15222function resetByRangesListToValue_ ( sheet , rangesAddressesList , value ) {
15323 value = value || '' ;
0 commit comments