-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.gs
168 lines (130 loc) · 4.21 KB
/
functions.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
// inserisce i dati inerenti ai Files affidi da importare in un oggetto
function importFilesToDB(sheet){
var objFilesAffidi = ObjApp.rangeToObjectsNoCamel(sheet.getDataRange().getValues())
return objFilesAffidi
}
function importDataToSheet(data,sheet){
// IMPORTA
//elimina la prima e la seconda riga dell'array 2d che era vuota
data.splice(0, 2);
//legge l'ultimo protocollo assegnato
var lastRow = sheet.getLastRow()
var lastProt = sheet.getRange(lastRow,1).getValue()
Logger.log(lastProt)
//protocolla i nuovi dati
for (var i=0; i<data.length; i++){
data[i].unshift(lastProt+i+1)
}
//importa i dati nel foglio
sheet.getRange(lastRow+1,1,data.length, (data[0].length)).setValues(data)
}
// legge uno sheet e inserisce i dati in un oggetto
function grabObjectFromSheet(sheet){
var data = sheet.getDataRange().getValues()
var headers = data[0]
//elimina la prima e la seconda riga dell'array 2d che è vuota
// in quanto negli sheets originali gli header sono composti da 2 righe
data.splice(0,2);
data.unshift(headers)
var obj = ObjApp.rangeToObjects(data)
return obj
}
function createFilesInFolder(docName) {
//crea il documento
var doc = DocumentApp.create(docName)
//apre il documento come file
var docFile = DriveApp.getFileById( doc.getId() );
//salva il file nella cartella
DriveApp.getFolderById(IDFolder).addFile( docFile );
//rimuove il file originario dalla root
DriveApp.getRootFolder().removeFile(docFile);
}
function cloneDoc(fileDoc, copyTitle) {;
var newFileDoc = fileDoc.makeCopy(copyTitle);
Logger.log(fileDoc.getUrl())
return newFileDoc
}
function mergeDataToHtml(newDoc, objData){
for (var record in objData){
Logger.log(record)
var text = 'name ' + objData.name + ' cognome' + objData.cognome
newDoc.appendPageBreak()
}
}
/**
* @param {objData} Oggetto che contiene i dati da sostituire nei rispettivi campi es. 'Nome': 'Daniele'
*/
function replaceTextWithObject(fileDoc, objData){
// itera su objData e per ogni oggetto interno richiama la funzione di sostituzione del testo
var i=1
for (var record in objData){
Logger.log(record)
//crea un oggetto con i dati da unire al documento
var objRecord = objData[record]
// unisce i dati al documento
Logger.log(objRecord)
Logger.log("replace")
var separator = '%'
for (var key in objRecord){
fileDoc.replaceText(separator + key + separator,objRecord[key])
Logger.log(objRecord[key])
// crea interruzione di pagina
fileDoc.appendPageBreak()
}
Logger.log(i)
i++
}
// chiude il ciclo
var nameDoc = 'lotto'
changeNameDoc(fileDoc, nameDoc)
}
/**
* @param {doc} Oggetto Document di cui si vuole cambiare il nome
* @name nome da sostituire
*/
function changeNameDoc(doc, name){
doc.setName(name)
}
function getHeight(length, ratio) {
var height = ((length)/(Math.sqrt((Math.pow(ratio, 2)+1))));
return Math.round(height);
}
function getWidth(length, ratio) {
var width = ((length)/(Math.sqrt((1)/(Math.pow(ratio, 2)+1))));
return Math.round(width);
}
function comma(num){
while (/(\d+)(\d{3})/.test(num.toString())){
num = num.toString().replace(/(\d+)(\d{3})/, '$1'+'.'+'$2');
}
return num;
}
// aggiorna lo stato del file a "Affido importato" e scrive la data di importazione
function updateFileState(value){
Logger.log('updateFileState')
var sheet = sheetFilesAffidi
Logger.log(sheetFilesAffidi.getName())
var lastRow = sheet.getLastRow()
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
Logger.log(i + ' ' + data[i][4])
if (data[i][3] == value) {
sheet.getRange(i+1, 5).setValue('Importato')
sheet.getRange(i+1, 7).setValue(new Date());
return
}
}
}
function deleteData(){
var sheet, lastCol
var sheets = [sheetFilesAffidi, sheetDiffideDaInviare,sheetDiffideInviate, sheetDettaglioFatture]
for (i=0; i<sheets.length; i++){
sheet = sheets[i]
lastCol = sheet.getLastColumn()
var data = sheet.getDataRange().getValues()
Logger.log(sheet.getName() +" " + data.length)
if (data.length >1){
sheet.getRange(2, 1,(data.length-1),lastCol).clear()
}
}
}