Skip to content

Instantly share code, notes, and snippets.

@h8nor
Last active June 6, 2021 04:50
Show Gist options
  • Save h8nor/0f6e1bb25b07f861dc8bec72104a864e to your computer and use it in GitHub Desktop.
Save h8nor/0f6e1bb25b07f861dc8bec72104a864e to your computer and use it in GitHub Desktop.
// Открытие сайдбара
function showSidebar() {
// Подключаем Bootstrap
let sidebarHTML = '<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">';
// Создаём форму - без jquery
sidebarHTML += '<form style="padding: 20px;text-align:center;">\
<div class="form-group">\
<label for="name">Имя</label>\
<input type="text" class="form-control" id="name" name="name" value="">\
</div>\
<div class="form-group">\
<label for="abrakadabra">Какая-то абракадабра</label>\
<textarea class="form-control" id="abrakadabra" name="abrakadabra" rows="3"></textarea>\
</div>\
<div class="form-group">\
<label for="strNum">Номер строки, в которую необходимо внести данные</label>\
<input type="text" class="form-control" id="strNum" name="strNum" value="1">\
</div>\
<button type="submit" class="btn btn-primary">Записать данные в таблицу</button>\
<br><br><br>\
<button type="button" id="sidebarClose" class="btn btn-danger">Закрыть сайдбар</button>\
</form>';
// Добавляем скрипты
// При сабмите формы вызываем функцию writeStrInTable() и передаём ей введённые данные
//developers.google.com/apps-script/guides/html/reference/run
// При клике на кнопку 'Закрыть сайдбар' закрываем его
//developers.google.com/apps-script/guides/html/reference/host#close()
sidebarHTML += "<script>\
document.querySelector('form').addEventListener('submit', function () {\
event.preventDefault();\
google.script.run\
.withSuccessHandler(function (resultMsg) {\
console.info(resultMsg);\
})\
.writeStrInTable({\
name: getElement('name').value,\
abrakadabra: getElement('abrakadabra').value,\
strNum: getElement('strNum').value\
});\
});\
\
const sbс = document.getElementById('sidebarClose');\
sbс.addEventListener('click', function() {\
google.script.host.close();\
});\
\
function getElement(id) {\
return document.getElementById(id);\
}\
</script>";
const htmlOutput = HtmlService.createHtmlOutput(sidebarHTML)
.setTitle('My add-on');
//developers.google.com/apps-script/reference/base/ui#showsidebaruserinterface
SpreadsheetApp.getUi()
.showSidebar(htmlOutput);
}
function writeStrInTable(e) {
const { name, abrakadabra } = e,
strNum = parseInt(e.strNum);
// Получаем объект с активной (открытой в данный момент) таблицей
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
// Записываем полученные данные в таблицу
sheet.getRange("A" + strNum).setValue(name);
sheet.getRange("B" + strNum).setValue(abrakadabra);
return "Data has been submitted to the Google Table";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment