Created
November 1, 2016 16:15
-
-
Save kir-sf/c0fa4fbc9fcdc38386b967422fe36812 to your computer and use it in GitHub Desktop.
Распределенная касса
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
var ID='вставьте сюда ID своей таблицы с единым реестром операций'; | |
function doGet(e) { | |
try { | |
var indexOfTochka=e.parameter.table; | |
if (indexOfTochka!=undefined) uploadTable(indexOfTochka); | |
} catch (err) {return err}; | |
return 0; | |
} | |
function uploadTable(par) { | |
// определяем точку | |
var tochkaName=getName(par); | |
if (tochkaName==0) return 0; | |
// читаем данные | |
var source=SpreadsheetApp.openById(par).getSheetByName('Реестр'); | |
var numRows=source.getDataRange().getNumRows(); | |
var data=source.getRange(9, 1, numRows-8, 4).getValues(); | |
var dateOfReport=source.getRange(5, 2).getValue(); | |
// заливаем в журнал | |
var dest=SpreadsheetApp.openById(ID).getSheetByName('Реестр операций'); | |
for (var index=0; index<data.length; index++) { | |
var newRow=[dateOfReport, tochkaName, data[index][0], data[index][1], data[index][2], data[index][3]]; | |
dest.appendRow(newRow); | |
} | |
// устанавливаем следующий день | |
nextDay(par); | |
} | |
// триггер установки нового дня | |
function setNewDay() { | |
var toDay=new Date(); | |
if (toDay.getDate()==1) | |
makeArchive(); | |
} | |
// перещелкиваем день в таблице | |
function nextDay(id) { | |
var sh=SpreadsheetApp.openById(id).getSheetByName('Реестр'); | |
var curDate=new Date(sh.getRange(5, 2).getValue()); | |
var newDate=new Date(curDate.getFullYear(), curDate.getMonth(), curDate.getDate()+1); | |
sh.getRange(5, 2).setValue(newDate); | |
sh.getRange(2, 2).setValue(sh.getRange(3, 2).getValue()); // остаток на утро переставляем | |
var numRows=sh.getDataRange().getNumRows(); | |
if (numRows>8) sh.getRange(9, 1, numRows-8, 4).clear(); | |
} | |
// определение наименования точки по переданному параметру | |
function getName(par) { | |
var sh=SpreadsheetApp.openById(ID).getSheetByName('Реестр точек'); | |
var numCols=sh.getDataRange().getNumColumns(); | |
var tochkiIds=sh.getRange(2, 1, 1, numCols).getValues(); | |
var curTochkaIndex=tochkiIds[0].indexOf(par); | |
if (curTochkaIndex==-1) return 0; | |
var tochkaName=sh.getRange(1, curTochkaIndex+1).getValue(); | |
return tochkaName; | |
} | |
// отправка архива | |
function makeArchive () { | |
var toDay=new Date(); | |
var file=Drive.Files.get(ID); | |
var url=file.exportLinks['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; | |
var token = ScriptApp.getOAuthToken(); | |
var response = UrlFetchApp.fetch(url, { | |
headers: { | |
'Authorization': 'Bearer ' + token | |
} | |
}); | |
var fileToSend=response.getBlob().setName("Архив журнала операций от "+toDay); | |
var mail={ | |
htmlBody: '<b>Во вложении архив журнала операций</b>', | |
name: "Автоматизированный кассир", | |
to: 'поставьте сюда адрес своей электронной почты', | |
subject: 'Архив журнала операций', | |
attachments: [fileToSend] | |
}; | |
try { | |
MailApp.sendEmail(mail); | |
} catch (err) {Logger.log(err)}; | |
} | |
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 myDocUi=SpreadsheetApp.getUi(); | |
myDocUi.createMenu('Кассовый отчет') | |
.addItem('Зафиксировать', 'fixReport') | |
.addToUi(); | |
} | |
function fixReport() { | |
var thisId=SpreadsheetApp.getActiveSpreadsheet().getId(); | |
var res=UrlFetchApp.fetch('https://Вставьте сюда адрес публикации своего API скрипта?table='+thisId); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment