Created
September 15, 2020 13:42
-
-
Save franklinokech/635368a79e3752fc794f1c6db64d4943 to your computer and use it in GitHub Desktop.
a script to move google sheet records
This file contains 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 onOpen() { | |
var ui = SpreadsheetApp.getUi(); | |
// Or DocumentApp or FormApp. | |
ui.createMenu('Main Menu') | |
.addItem('Create Tallying Sheet', 'copy2') | |
.addItem('Archive Data', 'archive_data') | |
.addToUi(); | |
} | |
//function to copy tallying to generator | |
function copy2() { | |
var folder=DriveApp.getFolderById("1D7D1l_13mwtbzmI5iffzaPsX1QooHDnd"); | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getSheetByName("Tallying") | |
var cellWithFileName = ss.getRange("B4"); | |
var name = cellWithFileName.getValue(); | |
var file=SpreadsheetApp.create(name); | |
var fileID = file.getId() | |
var copyFile=DriveApp.getFileById(fileID); | |
var destination = DriveApp.getFileById(fileID) | |
folder.addFile(copyFile); //copies file in folder we want: file is blank at this time | |
DriveApp.getRootFolder().removeFile(copyFile); //removes copied file from root | |
var newsheet = ss.getSheetByName("Tallying").copyTo(file); | |
var copyOnlyRange1 = ["A1:B7"]; | |
//var copyOnlyRange3 = ["A9:D12"]; | |
//var copyOnlyRange2 = ["C36:B359"]; | |
var srcrng1 = ss.getRange(copyOnlyRange1); | |
var values1 = srcrng1.getDisplayValues(); | |
//var srcrng2 = ss.getRange(copyOnlyRange2); | |
//var values2 = srcrng2.getDisplayValues(); | |
//var srcrng3 = ss.getRange(copyOnlyRange3); | |
//var values3 = srcrng3.getDisplayValues(); | |
newsheet.getRange(srcrng1.getA1Notation()).setValues(values1); | |
//newsheet.getRange(srcrng2.getA1Notation()).setValues(values2); | |
//newsheet.getRange(srcrng3.getA1Notation()).setValues(values3); | |
} | |
//Archive sorting data | |
function archive_data() {{ SpreadsheetApp.getUi() // the fist 18 lines and the last from else are just button for confirming | |
.createMenu('Custom Menu') | |
.addItem('Show alert', 'showAlert') | |
.addToUi(); | |
} | |
//set the confirmation dialog | |
var ui = SpreadsheetApp.getUi(); // Same variations. | |
var result = ui.alert( | |
'Please confirm', | |
'Do You Really Want To Archive?', | |
ui.ButtonSet.YES_NO); | |
// Process the user's response. | |
if (result == ui.Button.YES) { | |
try { | |
//Insert your script logic here | |
//NOTE!!! IMPORTANT!!! | |
//For testing and debugging - Remove the slashes in front of the Logger.log() lines - run the | |
//code and then in the VIEW menu - VIEW the LOGS - Provide the LOG print out if there is an error | |
var arrayOfRowsToArchive,columnNumberOfValuesToTestFor,data,i,lastColumn,L,numberOfRowsToArchive,numRows, | |
range,rowsToDelete,ss,sheet,sheetName,sheetToMoveTheRowTo,startRow,status,targetSheet,thisRowsData, | |
valuesToTestFor; | |
//USER INPUT: | |
startRow =2 ; //The row number to start from where the data starts - exclude header rows | |
valuesToTestFor = "Yes";//Type one or more values to test for - If multiple values seperate by comma | |
columnNumberOfValuesToTestFor = 4; | |
sheetName = "data_entry_summary";//Name of sheet tab where the data will be removed from | |
sheetToMoveTheRowTo = "Archives"; | |
//END OF USER INPUT | |
ss = SpreadsheetApp.getActiveSpreadsheet(); | |
sheet = ss.getSheetByName(sheetName);//Get the sheet tab with the data to be searched | |
numRows = sheet.getLastRow(); | |
lastColumn = sheet.getLastColumn(); | |
arrayOfRowsToArchive = []; | |
//The getRange() method uses parameters of (start Row, start Column, Number of Rows to get, Number of Columns to get) | |
data = sheet.getRange(startRow, 1, numRows, lastColumn).getValues();//Get all values except the header rows | |
L = data.length;//Get the number of rows that are in the data | |
for (i=0; i<L; i++) {//Loop through all the rows of data | |
status = data[i][columnNumberOfValuesToTestFor]; | |
Logger.log('status: ' + status); | |
if (valuesToTestFor.indexOf(status) !== -1 && status !="") {//Search for a match between the cell value and values to look for | |
thisRowsData = data[i];//Only get inner array of data | |
//Logger.log('thisRowsData: ' + thisRowsData) | |
arrayOfRowsToArchive.push(thisRowsData);//Push one row of data to outer array | |
} | |
} | |
if (arrayOfRowsToArchive) { | |
numberOfRowsToArchive = arrayOfRowsToArchive.length; | |
if (!numberOfRowsToArchive) { | |
Browser.msgBox('No records were found to Send To Tracker'); | |
return;//No rows were found to archive | |
} | |
} else {//There is no good value for arrayOfRowsToArchive- There was an error | |
//Logger.log('There is a problem with arrayOfRowsToArchive'); | |
} | |
targetSheet = ss.getSheetByName(sheetToMoveTheRowTo); | |
targetSheet.getRange(targetSheet.getLastRow()+1, 1, numberOfRowsToArchive, arrayOfRowsToArchive[0].length) | |
.setValues(arrayOfRowsToArchive); | |
//Logger.log('rowsToDelete: ' + rowsToDelete) | |
Browser.msgBox('Data Archived Successfully'); | |
} | |
catch(e) { | |
//Catch any error here. Example below is just sending an email with the error. | |
MailApp.sendEmail('crispus.kibuthi@komaza.org', | |
'Farmer Payment Error - Error', | |
e); | |
//error message to user | |
Browser.msgBox('Ooops, Something Wrong Occured,We have Processing Manager'); | |
} | |
} | |
} | |
//get date of entry | |
function onEdit(e) { | |
var ss = SpreadsheetApp.getActiveSheet(); | |
var r = ss.getActiveCell(); | |
//1.Change 'Sheet1' to be matching your sheet name | |
if (r.getColumn() < 9 && ss.getName()=='Data_entry') { // 2. If Edit is done in any column before Column (I) And sheet name is Sheet1 then: | |
var celladdress ='I'+ r.getRowIndex() | |
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("MM/dd/yyyy"); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment