Partner Program Pro
Tento návod vás provede procesem importu tabulky a nastavením Google Apps Scriptu pro komunikaci s aplikací Partner Program Pro.
NÁSLEDUJÍCÍ KROKY MŮŽETE PROVÉST POUZE NA PC, Z MOBILU ANI TABLETU TUTO INSTALACI UDĚLAT BOHUŽEL NELZE
1. Import XLSX tabulky do Google Sheets
- Stáhněte tabulku Partner Program Pro.xlsx z https://deepsoft.cz/partner-program-pro/ .
- Otevřete svůj Google Drive.
- Klikněte na Nový -> Nahrát soubor a vyberte staženou
Partner Program Pro.xlsxtabulku. - Po nahrání na soubor klikněte pravým tlačítkem a zvolte Otevřít v aplikaci -> Tabulky Google.
- Důležité: Soubor se musí uložit jako formát Tabulek Google (Soubor -> Uložit jako Tabulky Google).
- Otevřete https://docs.google.com/spreadsheets/ a stisnete velké barevné + .
- Klikněte na Soubor -> Importovat -> Nahrát -> Procházet a vyberte staženou
Partner Program Pro.xlsxtabulku. - Importovat místo = nahradit tabulku ->Importovat data.
- Tabulku si můžete přejmenovat a soubor Partner Program Pro.xlsx z Google Sheets odstranit.
a nebo
2. Příprava Google Apps Scriptu
V otevřené tabulce klikněte v horním menu na Rozšíření -> Apps Script. Smažte veškerý kód a vložte tento:
function doGet(e) {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var params = e.parameter;
var action = params.action ? params.action.toString().trim() : "";
var sheetName = params.subject ? params.subject.toString().trim() : "";
// --- 1. VYTVORENÍ PROJEKTU ---
if (action == "new_project") {
var sheet = ss.getSheetByName(sheetName);
if (!sheet) {
var template = ss.getSheetByName("Default");
sheet = template ? template.copyTo(ss).setName(sheetName) : ss.insertSheet(sheetName);
}
sheet.getRange("B1").setValue(sheetName);
sheet.getRange("B2").setValue(params.note || "Nová zakázka");
sheet.getRange("B3").setValue(params.term_start || "");
sheet.getRange("B4").setValue(params.term_stop || "");
sheet.getRange("B5").setValue(params.value || 0);
sheet.getRange("D2").setValue(params.sender || "Admin");
sheet.getRange("E2").setValue("proc");
if (params.vcp1) sheet.getRange("B33").setValue(params.vcp1);
if (params.vcp2) sheet.getRange("B34").setValue(params.vcp2);
if (params.nkl1) sheet.getRange("L2").setValue(params.nkl1);
if (params.nkl2) sheet.getRange("L3").setValue(params.nkl2);
if (params.nkl3) sheet.getRange("L4").setValue(params.nkl3);
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Vytvoreno").setMimeType(ContentService.MimeType.TEXT);
}
var sheet = ss.getSheetByName(sheetName);
if (!sheet) return ContentService.createTextOutput("Error: List nenalezen").setMimeType(ContentService.MimeType.TEXT);
// --- 2. PRIPOJENÍ K ZAKÁZCE (Join) ---
if (action == "join_project") {
var leadRows = [8, 14, 20, 26];
for (var i = 0; i < leadRows.length; i++) {
var row = leadRows[i];
if (sheet.getRange("D" + row).getValue().toString().trim() === "") {
var assignedId = "prac" + (20 + (i * 10));
sheet.getRange("D" + row).setValue(params.sender || "Uživatel");
SpreadsheetApp.flush();
return ContentService.createTextOutput(assignedId).setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Error: Plno").setMimeType(ContentService.MimeType.TEXT);
}
// --- 3. NASTAVENÍ PRACOVNÍKA (update_worker) ---
if (action == "update_worker") {
var row = getRowFromId(params.id);
var nameToSet = params.worker_name || params.note;
if (nameToSet) sheet.getRange("D" + row).setValue(nameToSet);
if (params.reward_type) sheet.getRange("E" + row).setValue(params.reward_type);
if (params.rate) sheet.getRange("F" + row).setValue(params.rate);
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Worker updated").setMimeType(ContentService.MimeType.TEXT);
}
// --- 4. ZÁPIS HODIN (update_hours) ---
if (action == "update_hours") {
var row = getRowFromId(params.id);
sheet.getRange("G" + row).setValue(params.value);
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Hours updated").setMimeType(ContentService.MimeType.TEXT);
}
// --- 5. CTENÍ NEBO ZÁPIS KONKRÉTNÍ BUNKY (update_cell) ---
if (action == "update_cell") {
var cellRef = params.note;
if (params.id == "read") {
var val = sheet.getRange(cellRef).getValue();
return ContentService.createTextOutput(val.toString()).setMimeType(ContentService.MimeType.TEXT);
} else {
sheet.getRange(cellRef).setValue(params.value);
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Cell updated").setMimeType(ContentService.MimeType.TEXT);
}
}
// --- 6. SMAZÁNÍ PRACOVNÍKA (delete_worker) ---
if (action == "delete_worker") {
var idNum = parseInt(params.id);
if (idNum == 20 || idNum == 30 || idNum == 40 || idNum == 50) {
var offset = (idNum - 20) / 10;
var dStart = 8 + (offset * 6);
var dEnd = 13 + (offset * 6);
var bStart1 = 8 + (offset * 2);
var bStart2 = 19 + (offset * 3);
var cRow = 8 + (offset * 6);
sheet.getRange("D" + dStart + ":G" + dEnd).clearContent();
sheet.getRange("B" + bStart1 + ":B" + (bStart1 + 1)).clearContent();
sheet.getRange("B" + bStart2 + ":B" + (bStart2 + 2)).clearContent();
sheet.getRange("C" + cRow).setValue("prac" + idNum);
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Worker " + idNum + " deleted").setMimeType(ContentService.MimeType.TEXT);
}
}
// --- 7. SMAZÁNÍ CELÉHO LISTU (delete_project) ---
if (action == "delete_project") {
var sheetToDelete = ss.getSheetByName(sheetName);
if (sheetToDelete && sheetName !== "Default") {
ss.deleteSheet(sheetToDelete);
return ContentService.createTextOutput("Success: Project sheet deleted").setMimeType(ContentService.MimeType.TEXT);
}
return ContentService.createTextOutput("Error: Project sheet not found").setMimeType(ContentService.MimeType.TEXT);
}
// --- 8. SMAZÁNÍ PRACOVNÍKA TÝMU (D,E,F,G) ---
if (action == "delete_team_worker") {
var idNum = parseInt(params.id);
var row = 0;
var base = Math.floor(idNum / 10);
var offset = idNum % 10;
row = ((base - 1) * 6) + 2 + offset;
if (row > 0) {
sheet.getRange("D" + row + ":G" + row).clearContent();
SpreadsheetApp.flush();
return ContentService.createTextOutput("Success: Team worker " + idNum + " deleted").setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Error: Nezname action (" + action + ")").setMimeType(ContentService.MimeType.TEXT);
} catch (err) {
return ContentService.createTextOutput("Error Scriptu: " + err.message).setMimeType(ContentService.MimeType.TEXT);
}
}
function getRowFromId(id) {
var idNum = parseInt(id.replace("prac", ""));
var base = Math.floor(idNum / 10);
var offset = idNum % 10;
return ((base - 1) * 6) + 2 + offset;
}
3. Nasazení (Deployment)
- Klikněte na modré tlačítko Nasadit (Implementovat) -> Nová implementace.
- Vyberte typ: Webová aplikace.
- Kdo má přístup: Kdokoliv (Anyone) - Nezbytné!
- Google vás upozorní na rizika....je vhodné vytvořit a používat jiný než osobní účet s fotkami
- Po nasazení zkopírujte URL, dlouhý text na konci výpisu končící ....
/exec.
4. Nastavení v aplikaci
- Zkopírovanou URL vložte stisknutím "Paste" v aplikaci Partner Program Pro.
OD TÉTO CHVÍLE POUŽÍVÁTE VLASTNÍ TABULKU BEZ LIMITŮ.