Created
January 15, 2019 19:32
-
-
Save bennettscience/ff253bb5e193fb5637eb16deb50a017a to your computer and use it in GitHub Desktop.
Copy notes between Google Sheets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // If you make a mistake, this will clear all notes from the child sheets | |
| function clearChildNotes() { | |
| var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); | |
| var buildings = sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues(); | |
| for(var i=0; i<buildings.length; i++) { | |
| SpreadsheetApp.openByUrl(buildings[i][1]).getSheetByName('Sheet1').clearNotes(); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function syncNotes() { | |
| var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); | |
| var data = sheet.getRange(2,1,sheet.getLastRow(), sheet.getLastColumn()).getValues(); | |
| for (var i=0; i<data.length; i++) { | |
| if(data[i][0]) { | |
| var url = getSheetUrl(data[i][0]) | |
| if(url) { | |
| // This returns an array of notes as an object so you can write a row at a time rather than a cell at a time. | |
| var notes = sheet.getRange(i+2, 1, 1, sheet.getLastColumn()).getNotes(); | |
| // Set the value on the child sheet | |
| var child = SpreadsheetApp.openByUrl(url[0]); | |
| child.getSheetByName('Sheet1').getRange((i+2 - url[1]), 1, 1, notes[0].length).setNotes(notes); | |
| } | |
| } | |
| } | |
| } | |
| // Helper function to get the sheet URL for the child sheet | |
| function getSheetUrl(building) { | |
| var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2'); | |
| var buildings = sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues(); | |
| var url; | |
| buildings.forEach(function(el) { | |
| if(el[0].toString() == building) { | |
| url = [el[1], el[2]] | |
| } | |
| }) | |
| return url; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function updateOffset() { | |
| var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
| // Get the offset helper and data as a 2D array | |
| var offsetsSheet = ss.getSheetByName('Sheet2'); | |
| var offsets = offsetsSheet.getDataRange().getValues(); | |
| // Get the staff list as a 2D array | |
| var torSheet = ss.getSheetByName('Sheet1'); | |
| var torList = torSheet.getDataRange().getValues(); | |
| // Loop each building | |
| for(var i=0; i<offsets.length; i++) { | |
| for(var j=0; j<torList.length; j++) { | |
| if(offsets[i][0] == torList[j][0]) { | |
| offsetsSheet.getRange(i+1, 3).setValue((j-1)); | |
| // Stop this loop and index i+1 | |
| break; | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment