0% found this document useful (0 votes)
15 views9 pages

Appsscripts GS EmpData

The document contains a Google Apps Script for a multi-user data entry form in Google Sheets, allowing users to search, save, update, delete, and generate reports for employee data. It includes functions for searching by employee number and name, checking for duplicates, clearing form fields, and generating PDF and Excel reports. Additionally, it provides functionality for file uploads and managing data within specified sheets in the spreadsheet.

Uploaded by

yotowa9204
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views9 pages

Appsscripts GS EmpData

The document contains a Google Apps Script for a multi-user data entry form in Google Sheets, allowing users to search, save, update, delete, and generate reports for employee data. It includes functions for searching by employee number and name, checking for duplicates, clearing form fields, and generating PDF and Excel reports. Additionally, it provides functionality for file uploads and managing data within specified sheets in the spreadsheet.

Uploaded by

yotowa9204
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

// www.sankethamsoft.

com
// *********************
// Google Sheet - Multi User Data Entry Form
//---------------------------------------------
// Employee Details (Google Sheet)
//--------------------------------
//

var strDuplicate = "NO" ;


var ssdata =
SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/160EeynSazLWuciwpr
obAXlucbAoV45TbUK1W5U89WpU/edit?usp=sharing");
var ss = SpreadsheetApp.getActiveSpreadsheet();

//=====================================================================
// Search Emp. Number

var SPREADSHEET_NAME = "Data";


var SEARCH_COL_IDX = 0;
var RETURN_COL_IDX = 0;

function searchStr() {

var formSS = ss.getSheetByName("Form1"); //Form Sheet

var str = formSS.getRange("C3").getValue();


var values =
ssdata.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();

var SSset = ss.getSheetByName("settings"); //settings Sheet ;


SSset.getRange("B2").setValue("NO") ;

for (var i = 0; i < values.length; i++) {


var row = values[i];
if (row[SEARCH_COL_IDX] == str) {

formSS.getRange("C8").setValue(row[0]) ;
formSS.getRange("C10").setValue(row[1]);
formSS.getRange("C12").setValue(row[2]);
formSS.getRange("F8").setValue(row[3]);
formSS.getRange("F10").setValue(row[4]);
formSS.getRange("C14").setValue(row[5]);
formSS.getRange("C18").setValue(row[6]);

return row[RETURN_COL_IDX];

}
}
}

//===================================================================
// Search Emp. Name
//---------------------
function searchStrName() {
var formSS = ss.getSheetByName("Form1"); //Form Sheet
var formsettings = ss.getSheetByName("settings"); //Sheet settings

var str = formsettings.getRange("A2").getValue();


var values =
ssdata.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();

var SSset = ss.getSheetByName("settings"); //settings Sheet ;


SSset.getRange("B2").setValue("NO") ;

for (var i = 0; i < values.length; i++) {


var row = values[i];
if (row[SEARCH_COL_IDX] == str) {

formSS.getRange("C5").setValue(row[0]) ;
formSS.getRange("C8").setValue(row[0]) ;
formSS.getRange("C10").setValue(row[1]);
formSS.getRange("C12").setValue(row[2]);
formSS.getRange("F8").setValue(row[3]);
formSS.getRange("F10").setValue(row[4]);
formSS.getRange("C14").setValue(row[5]);
formSS.getRange("C18").setValue(row[6]);

return row[RETURN_COL_IDX];

}
}
}

//===========================================================
// Clear form

function clearCell() {

var formSS = ss.getSheetByName("Form1"); //Form Sheet

var SSset = ss.getSheetByName("settings"); //settings Sheet ;


SSset.getRange("B2").setValue("YES") ;

formSS.getRange("C8").clear();
formSS.getRange("C10").clear();
formSS.getRange("C12").clear();
formSS.getRange("F8").clear();
formSS.getRange("F10").clear();
formSS.getRange("C14").clear();
formSS.getRange("C18").clear();
return true ;

//=====================================================================

// Save Data - New / Update data

function saveData1() {
var formSS = ss.getSheetByName("Form1"); //Form Sheet
// var datasheet = ss.getSheetByName("Data"); //Data Sheet
var datasheet = ssdata.getSheetByName("Data"); //Data Sheet
var SSset = ss.getSheetByName("settings"); //settings Sheet ;

// check add New or Update record


var strYN = SSset.getRange("B2").getValue() ;
if (strYN == "YES") {

// Save New
//Input Values
var values = [[formSS.getRange("C8").getValue(),
formSS.getRange("C10").getValue(),
formSS.getRange("C12").getValue(),
formSS.getRange("F8").getValue(),
formSS.getRange("F10").getValue(),
formSS.getRange("C14").getValue(),
formSS.getRange("C18").getValue()]];

// Check Duplicate value


checkDuplicate() ;
if (strDuplicate == "YES") {
SpreadsheetApp.getUi().alert(' "Emp. Number Already Entered, Enter New
Number"');

} else {

datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 7).setValues(values);
SpreadsheetApp.getUi().alert(' "New Data Saved - Emp #' +
formSS.getRange("C8").getValue() +' "');

formSS.getRange("C8").clear();
formSS.getRange("C10").clear();
formSS.getRange("C12").clear();
formSS.getRange("F8").clear();
formSS.getRange("F10").clear();
formSS.getRange("C14").clear();
formSS.getRange("C18").clear();
strNew1 = "NO" ;

SSset.getRange("B2").setValue("NO") ;
}

} else {

// update data
//-------------
//var SPREADSHEET_NAME = "Data";
var SEARCH_COL_IDX = 0;
var RETURN_COL_IDX = 0;

// var ssdata =
SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1sIIZ1KB6KVhdYSJX4
4OYWYJbEd1ibSVOn4Pw8LSg5zw/edit?usp=sharing");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form1"); //Form Sheet
var datasheet = ssdata.getSheetByName("Data"); //Data Sheet
var str = formSS.getRange("C8").getValue();
var values = ssdata.getSheetByName("Data").getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
var row = values[i];
if (row[SEARCH_COL_IDX] == str) {
var INT_R = i+1

var values1 = [[formSS.getRange("C8").getValue(),


formSS.getRange("C10").getValue(),
formSS.getRange("C12").getValue(),
formSS.getRange("F8").getValue(),
formSS.getRange("F10").getValue(),
formSS.getRange("C14").getValue(),
formSS.getRange("C18").getValue()]];

datasheet.getRange(INT_R, 1, 1, 7).setValues(values1);
SpreadsheetApp.getUi().alert(' "Data Updated "');
return row[RETURN_COL_IDX];
strNew1 = "NO" ;

}
}

//---------------------------------------------

function checkDuplicate() {

var formSS = ss.getSheetByName("Form1"); //Form Sheet


//var formsettings = ss.getSheetByName("settings"); //Sheet settings
var str = formSS.getRange("C8").getValue();
var values =
ssdata.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
var row = values[i];
if (row[SEARCH_COL_IDX] == str) {

// SpreadsheetApp.getUi().alert(' "Emp. Number Already Entered, Enter


New Number"');
// Boolean = true ;
strDuplicate = "YES" ;
return row[RETURN_COL_IDX];

}
}
}

//=========================================================

//Delete record
//-------------

function rowDelete() {
var formSS = ss.getSheetByName("Form1"); //Form Sheet
var datasheet = ssdata.getSheetByName("Data"); //Data Sheet

var ui = SpreadsheetApp.getUi();
var response = ui.alert(
'Delete ?',
ui.ButtonSet.YES_NO);

// Process the user's response.


if (response == ui.Button.YES) {

var str = formSS.getRange("C8").getValue();


var values =
ssdata.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
var row = values[i];
if (row[SEARCH_COL_IDX] == str) {
var INT_R = i+1

datasheet.deleteRow(INT_R) ;

formSS.getRange("C8").clear();
formSS.getRange("C10").clear();
formSS.getRange("C12").clear();
formSS.getRange("F8").clear();
formSS.getRange("F10").clear();
formSS.getRange("C14").clear();
formSS.getRange("C18").clear();

return row[RETURN_COL_IDX];
}

}
}

//====================================================================
// Create pdf Report
//-------------------

function generatePdf() {
SpreadsheetApp.flush();

var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Get active


spreadsheet.
var sheets = sourceSpreadsheet.getSheets(); // Get active sheet.
//var sheetName = sourceSpreadsheet.getActiveSheet().getName();

var sourceSheet = sourceSpreadsheet.getSheetByName("Report").getName;


var sheetName = "Report" ;
var pdfName = sheetName + ".pdf"; // Set the output filename as SheetName.
var parents = DriveApp.getFileById(sourceSpreadsheet.getId()).getParents(); //
Get folder containing spreadsheet to save pdf in.
if (parents.hasNext()) {
var folder = parents.next();
} else {
folder = DriveApp.getRootFolder();
}
var theBlob = createblobpdf(sheetName, pdfName);
var newFile = folder.createFile(theBlob);
// var dl = newFile.getUrl
var dl = newFile.getDownloadUrl() ;

var html=Utilities.formatString('<a href="%s">Download</a>',dl);


var ui=HtmlService.createHtmlOutput(html);
// SpreadsheetApp.getUi().showModelessDialog(ui, 'title');
SpreadsheetApp.getUi().showModalDialog(ui, 'title');

var files = folder.getFilesByName(pdfName);


while (files.hasNext()) {
files.next().setTrashed(true);
}

//-----------------------------------------------------------

function createblobpdf(sheetName, pdfName) {


var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var url = 'https://docs.google.com/spreadsheets/d/' + sourceSpreadsheet.getId() +
'/export?exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=A4' // paper size legal / letter / A4
+ '&portrait=false' // orientation, false for landscape
+ '&fitw=true' // fit to page width, false for actual size
+ '&sheetnames=true&printtitle=false' // hide optional headers and footers
+ '&pagenum=RIGHT&gridlines=false' // hide page numbers and gridlines
+ '&fzr=true' // repeat row headers (frozen rows) on each page
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=TOP' //TOP/MIDDLE/BOTTOM
+ '&gid=' + sourceSheet.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
// request export url
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var theBlob = response.getBlob().setName(pdfName);
return theBlob;
};

//===========================================================

//- Create Excel Report


//----------------------

function generateexcel() {
SpreadsheetApp.flush();

var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Get active


spreadsheet.
var sheets = sourceSpreadsheet.getSheets(); // Get active sheet.
//var sheetName = sourceSpreadsheet.getActiveSheet().getName();

var sourceSheet = sourceSpreadsheet.getSheetByName("Report").getName;


var sheetName = "Report" ;
var excelName = sheetName + ".xlsx"; // Set the output filename as SheetName.
var parents = DriveApp.getFileById(sourceSpreadsheet.getId()).getParents(); //
Get folder containing spreadsheet to save xlsx in.
if (parents.hasNext()) {
var folder = parents.next();
} else {
folder = DriveApp.getRootFolder();
}
var theBlob = createblobexcel(sheetName, excelName);
var newFile = folder.createFile(theBlob);
// var dl = newFile.getUrl
var dl = newFile.getDownloadUrl() ;

var html=Utilities.formatString('<a href="%s">Download</a>',dl);


var ui=HtmlService.createHtmlOutput(html);
// SpreadsheetApp.getUi().showModelessDialog(ui, 'title');
SpreadsheetApp.getUi().showModalDialog(ui, 'title');

var files = folder.getFilesByName(excelName);


while (files.hasNext()) {
files.next().setTrashed(true);
}

//-----------------------------------------------------------

function createblobexcel(sheetName, excelName) {


var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var url = 'https://docs.google.com/spreadsheets/d/' + sourceSpreadsheet.getId() +
'/export?exportFormat=xlsx&format=xlsx' // export as pdf / csv / xls / xlsx
+ '&size=A4' // paper size legal / letter / A4
+ '&portrait=false' // orientation, false for landscape
+ '&fitw=true' // fit to page width, false for actual size
+ '&sheetnames=true&printtitle=false' // hide optional headers and footers
+ '&pagenum=RIGHT&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=TOP' //TOP/MIDDLE/BOTTOM
+ '&gid=' + sourceSheet.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
// request export url
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var theBlob = response.getBlob().setName(excelName);
return theBlob;
};

//======================================================================
// upload file
//--------------

function openAttachmentDialog() {
var html = HtmlService.createHtmlOutputFromFile('UploadFile');
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showModalDialog(html, 'Upload File');
}
//-----------------------------------
function saveFile(obj) {

var formSS = ss.getSheetByName("Form1"); //Form Sheet

var blob = Utilities.newBlob(Utilities.base64Decode(obj.data), obj.mimeType,


obj.fileName);
var file =
DriveApp.getFolderById("1Lk2GxdpgrV64cIXugfwLQ0eHgbieYxPI").createFile(blob); //
Shared folder id to upload file

var cellFormula = file.getUrl() ;


var activeSheet = SpreadsheetApp.getActiveSheet();
formSS.getRange("C18").setValue(file.getUrl()) ;

var fid1 = file.getId() ;


var img = DriveApp.getFileById(fid1).getBlob();

return file.getId();

=====================================================================
//------------------------------------------------------------
// UploadFile.html
// ---------------

<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-
ons1.css">
</head>
<script>
function getFiles() {
document.getElementById("uploadButton").disabled = true;
const progressText = document.getElementById("progress");
const f = document.getElementById('files');
var uploadCompletedCount = 0;
progressText.innerHTML = "Uploading file " + (uploadCompletedCount + 1) + "/"
+ [...f.files].length + "";
[...f.files].forEach((file, i) => {
const fr = new FileReader();
fr.onload = (e) => {
const data = e.target.result.split(",");
const obj = {fileName: f.files[i].name, mimeType: data[0].match(/:(\w.
+);/)[1], data: data[1]};
google.script.run.withSuccessHandler((id) => {
uploadCompletedCount++;
progressText.innerHTML = "Upload completed";
if (uploadCompletedCount >= [...f.files].length){
google.script.host.close();
}
else{
progressText.innerHTML = "Uploading file " + (uploadCompletedCount +
1) + "/" + [...f.files].length + "";
}
}).saveFile(obj);
}
fr.readAsDataURL(file);
});
}
</script>
<body>
<!-- <input type="file" name="upload" id="files" multiple/> -->
<input type="file" name="upload" id="files"/> <!-- I expect to up load only one
file -->
<input type='button' id="uploadButton" value='Upload' onclick='getFiles()'
class="action">
<br><br>
<div id="progress"> </div>
</body>
</html>

//---------------------------

You might also like