{"id":828,"date":"2025-03-20T12:09:40","date_gmt":"2025-03-20T12:09:40","guid":{"rendered":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/?page_id=828"},"modified":"2025-03-20T13:17:40","modified_gmt":"2025-03-20T13:17:40","slug":"%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5","status":"publish","type":"page","link":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/","title":{"rendered":"Google Lehtede lisandmoodulite ja skriptide arendamine."},"content":{"rendered":"\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c onEdit (\u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435)\u00a0<\/strong><\/p>\n\n\n\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f onEdit \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c\n\/\/ https:\/\/developers.google.com\/apps-script\/guides\/triggers\/#onedite\nfunction onEdit(e) {\n  Logger.log(e);\n\n  \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u044f\u0447\u0435\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\n  var range = e.range;\n\n  \/\/ \u041b\u0438\u0441\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\n  var sheet = range.getSheet();\n\n  \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0443\u0436\u043d\u044b\u0439 \u043b\u0438 \u044d\u0442\u043e \u043d\u0430\u043c \u043b\u0438\u0441\u0442\n  Logger.log(sheet.getName());\n  if (sheet.getName() != &#039;\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430&#039;) {\n    return false;\n  }\n\n  \/\/ \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0435\u043a\u0441\u0442, \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443.\n  \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\n  Logger.log(range.getColumn());\n  if  (range.getColumn() != 1) {\n    return false;\n  }\n\n  for (var i = 1; i &lt;= range.getNumRows(); i++) {\n    var cell = range.getCell(\n      i, \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n      1 \/\/ \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043b\u043e\u043d\u043a\u0438\n    );\n\n    \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c\n    var russianText = cell.getValue();\n\n    \/\/ \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439\n    \/\/ https:\/\/developers.google.com\/apps-script\/reference\/language\/language-app\n    var translatedText = LanguageApp.translate(\n      russianText, \/\/ \u0442\u0435\u043a\u0441\u0442\n      &#039;ru&#039;, \/\/ \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n      &#039;en&#039; \/\/ \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n    );\n\n    \/\/ \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u043e \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443\n    sheet.getRange(\n      cell.getRowIndex(), \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n\n\n\n\n\n      2 \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\n    ).setValue(translatedText);\n  }\n\n}\n<\/pre><\/div>\n\n\n<p><strong>\u0410 \u044d\u0442\u043e \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 \u0438 \u043d\u0441\u0442\u0440\u043e\u0438\u043b\u0438.<\/strong> <\/p>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e \u043c\u0438\u043c\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0435\u0449\u0435 3 \u044f\u0437\u044b\u043a\u0430. \u0418\u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u043d\u043e \u0438 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438\u0439, \u042d\u0441\u0442\u043e\u043d\u0441\u0438\u0439 \u0438 \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"316\" src=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png\" alt=\"\" class=\"wp-image-834\" srcset=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png 947w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18-300x100.png 300w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18-768x256.png 768w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18-150x50.png 150w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18-600x200.png 600w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f onOpen() \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\n\/\/ https:\/\/developers.google.com\/apps-script\/guides\/triggers\/#onopen\nfunction onOpen() {\n \n  \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/base\/ui#createmenucaption\n  SpreadsheetApp.getUi()\n      .createMenu(&#039;Konspekti n\u00e4ited&#039;)\n      .addItem(&#039;\u041f\u0440\u0438\u043c\u0435\u0440:..&#039;, &#039;...&#039;) \/\/\u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f\n      .addToUi();\n}\n\n\n\n\n\n\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f onEdit \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c\n\/\/ https:\/\/developers.google.com\/apps-script\/guides\/triggers\/#onedite\nfunction onEdit(e) {\n  Logger.log(e);\n\n  \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u044f\u0447\u0435\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\n  var range = e.range;\n\n  \/\/ \u041b\u0438\u0441\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\n  var sheet = range.getSheet();\n\n  \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0443\u0436\u043d\u044b\u0439 \u043b\u0438 \u044d\u0442\u043e \u043d\u0430\u043c \u043b\u0438\u0441\u0442\n  Logger.log(sheet.getName());\n  if (sheet.getName() != &#039;\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430&#039;) {\n    return false;\n  }\n\n  \/\/ \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0435\u043a\u0441\u0442, \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443.\n  \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\n  Logger.log(range.getColumn());\n  if  (range.getColumn() != 1) {\n    return false;\n  }\n\n  for (var i = 1; i &lt;= range.getNumRows(); i++) {\n    var cell = range.getCell(\n      i, \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n      1 \/\/ \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043b\u043e\u043d\u043a\u0438\n    );\n\n    \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c\n    var russianText = cell.getValue();\n\n    \/\/ \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439\n    \/\/ https:\/\/developers.google.com\/apps-script\/reference\/language\/language-app, https:\/\/cloud.google.com\/translate\/docs\/languages\n    var translatedText = LanguageApp.translate(\n      russianText, \/\/ \u0442\u0435\u043a\u0441\u0442\n      &#039;ru&#039;, \/\/ \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n      &#039;en&#039; \/\/ \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n    );\n\n\n    let translatedText2 = LanguageApp.translate(\n      russianText, \/\/ \u0442\u0435\u043a\u0441\u0442\n      &#039;ru&#039;, \/\/ \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n      &#039;fr&#039; \/\/ \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n    );\n\n        let translatedText3 = LanguageApp.translate(\n      russianText, \/\/ \u0442\u0435\u043a\u0441\u0442\n      &#039;ru&#039;, \/\/ \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n      &#039;et&#039; \/\/ \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\n    );\n\n    \/\/ \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u043e \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443\n    sheet.getRange(\n      cell.getRowIndex(), \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n      2 \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\n    ).setValue(translatedText);\n\n        \/\/ \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0443\n    sheet.getRange(\n      cell.getRowIndex(), \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n      3 \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\n    ).setValue(translatedText2);\n\n        \/\/ \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0443\n    sheet.getRange(\n      cell.getRowIndex(), \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438\n      4 \/\/ \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\n    ).setValue(translatedText3);\n  }\n\n}\n<\/pre><\/div>\n\n\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 HTML Service (\u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430 \u0432 Google Spreadsheets)<\/strong><\/p>\n\n\n\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\nfunction showModalDialog() {\n \n  var modalHtml = &quot;&lt;code&gt;HTML&lt;\/code&gt; \u043a\u043e\u0434 - \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 &lt;i&gt;\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e&lt;\/i&gt; &lt;br&gt; \u043e\u043a\u043d\u0430&quot;;\n \n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/html\/html-service#createhtmloutputhtml\n  var htmlOutput = HtmlService.createHtmlOutput(modalHtml)\n        .setWidth(600) \/\/ \u0428\u0438\u0440\u0438\u043d\u0430\n        .setHeight(100); \/\/ \u0412\u044b\u0441\u043e\u0442\u0430\n \n  \/\/ \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442  - \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0438\u0437 \u0444\u0430\u0439\u043b\u0430\n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/html\/html-service#createHtmlOutputFromFile(String)\n  \/\/ \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c HTML \u043a\u043e\u0434 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u0424\u0430\u0439\u043b - \u0421\u043e\u0437\u0434\u0430\u0442\u044c - HTML \u0444\u0430\u0439\u043b)\n  \/\/ var htmlOutput = HtmlService.createHtmlOutputFromFile(filenameModal);\n \n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/base\/ui#showModalDialog(Object,String)\n  SpreadsheetApp.getUi().showModalDialog(htmlOutput, &#039;\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430&#039;);\n \n}\n \n\/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430\nfunction showSidebar() {\n \n  var htmlOutput = HtmlService\n    .createHtmlOutput(&#039;&lt;p&gt;A change of speed, a change of style...&lt;\/p&gt;&#039;)\n    .setTitle(&#039;My add-on&#039;);\n \n  \/\/ https:\/\/developers.google.com\/apps-script\/reference\/base\/ui#showsidebaruserinterface\n  SpreadsheetApp.getUi().showSidebar(htmlOutput);\n \n}\n<\/pre><\/div>\n\n\n<p><strong>\u042d\u0442\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/strong><\/p>\n\n\n\n<p><strong>\u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043d\u043e\u043f\u043a\u0443 puhasta \u043e\u043d\u0430 \u0441\u0442\u0438\u0440\u0430\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u043c\u043b \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u044d\u0441\u0442\u043e\u043d\u0441\u043a\u0438\u0439 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"132\" src=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-19.png\" alt=\"\" class=\"wp-image-835\" srcset=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-19.png 732w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-19-300x54.png 300w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-19-150x27.png 150w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-19-600x108.png 600w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"782\" src=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-20.png\" alt=\"\" class=\"wp-image-836\" srcset=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-20.png 412w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-20-158x300.png 158w, https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-20-79x150.png 79w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ Funktsioon modaalakna avamiseks\nfunction showModalDialog() {\n    var modalHtml = &quot;&lt;code&gt;HTML&lt;\/code&gt; kood - &lt;i&gt;modaalse&lt;\/i&gt; akna sisu&quot;;\n    var htmlOutput = HtmlService.createHtmlOutput(modalHtml)\n        .setWidth(600)\n        .setHeight(120);\n    SpreadsheetApp.getUi().showModalDialog(htmlOutput, &#039;Modaalaken&#039;);\n}\n\n\/\/ Funktsioon k\u00fclgriba avamiseks\nfunction showSidebar() {\n    var sidebarHTML = &#039;&lt;link rel=&quot;stylesheet&quot; href=&quot;https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.3.1\/css\/bootstrap.min.css&quot;&gt;&#039;;\n    sidebarHTML += &#039;&lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js&quot;&gt;&lt;\/script&gt;&#039;;\n    \n    sidebarHTML += &#039;&lt;form style=&quot;padding: 20px; text-align:center;&quot;&gt;\\\n        &lt;div class=&quot;form-group&quot;&gt;\\\n            &lt;label for=&quot;name&quot;&gt;Nimi&lt;\/label&gt;\\\n            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;name&quot; name=&quot;name&quot;&gt;\\\n        &lt;\/div&gt;\\\n        &lt;div class=&quot;form-group&quot;&gt;\\\n            &lt;label for=&quot;school&quot;&gt;Mis koolis sa \u00f5pid?&lt;\/label&gt;\\\n            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;school&quot; name=&quot;school&quot;&gt;\\\n        &lt;\/div&gt;\\\n        &lt;div class=&quot;form-group&quot;&gt;\\\n            &lt;label for=&quot;grade&quot;&gt;Mis klassis sa \u00f5pid?&lt;\/label&gt;\\\n            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;grade&quot; name=&quot;grade&quot;&gt;\\\n        &lt;\/div&gt;\\\n        &lt;div class=&quot;form-group&quot;&gt;\\\n            &lt;label for=&quot;rowNum&quot;&gt;Reanumber, kuhu andmed lisada&lt;\/label&gt;\\\n            &lt;input type=&quot;number&quot; class=&quot;form-control&quot; id=&quot;rowNum&quot; name=&quot;rowNum&quot; min=&quot;1&quot;&gt;\\\n        &lt;\/div&gt;\\\n        &lt;button type=&quot;submit&quot; class=&quot;btn btn-success&quot;&gt;Lisa tabelisse&lt;\/button&gt;\\\n        &lt;br&gt;&lt;br&gt;\\\n        &lt;button type=&quot;button&quot; id=&quot;clearFields&quot; class=&quot;btn btn-warning&quot;&gt;Puhasta v\u00e4ljad&lt;\/button&gt;\\\n        &lt;br&gt;&lt;br&gt;\\\n        &lt;button type=&quot;button&quot; id=&quot;closeSidebar&quot; class=&quot;btn btn-danger&quot;&gt;Sulge k\u00fclgriba&lt;\/button&gt;\\\n    &lt;\/form&gt;&#039;;\n    \n    sidebarHTML += &quot;&lt;script&gt;\\\n        $(document).on(&#039;submit&#039;, &#039;form&#039;, function () { \\\n            google.script.run \\\n            .withSuccessHandler(function (message) { \\\n                alert(message);\\\n            })\\\n            .writeStrInTable({ \\\n                name: $(&#039;#name&#039;).val(), \\\n                school: $(&#039;#school&#039;).val(), \\\n                grade: $(&#039;#grade&#039;).val(), \\\n                rowNum: $(&#039;#rowNum&#039;).val() \\\n            });\\\n            return false;\\\n        });\\\n\\\n        $(&#039;#clearFields&#039;).on(&#039;click&#039;, function() {\\\n            $(&#039;#name&#039;).val(&#039;&#039;);\\\n            $(&#039;#school&#039;).val(&#039;&#039;);\\\n            $(&#039;#grade&#039;).val(&#039;&#039;);\\\n            $(&#039;#rowNum&#039;).val(&#039;&#039;);\\\n        });\\\n\\\n        $(&#039;#closeSidebar&#039;).on(&#039;click&#039;, function() {\\\n            google.script.host.close();\\\n        });\\\n    &lt;\/script&gt;&quot;;\n    \n    var htmlOutput = HtmlService.createHtmlOutput(sidebarHTML)\n        .setTitle(&#039;Mis koolis \u00f5pid&#039;);\n    SpreadsheetApp.getUi().showSidebar(htmlOutput);\n}\n\n\/\/ Funktsioon andmete kirjutamiseks tabelisse\nfunction writeStrInTable(data) {\n    var name = data.name;\n    var school = data.school;\n    var grade = data.grade;\n    var rowNum = parseInt(data.rowNum);\n    \n    if (!name || !school || !grade || isNaN(rowNum) || rowNum &lt; 1) {\n        return &quot;Palun t\u00e4itke k\u00f5ik v\u00e4ljad \u00f5igesti!&quot;;\n    }\n    \n    var ss = SpreadsheetApp.getActiveSpreadsheet();\n    var sheet = ss.getActiveSheet();\n    \n    sheet.getRange(&quot;A&quot; + rowNum).setValue(name);\n    sheet.getRange(&quot;B&quot; + rowNum).setValue(school);\n    sheet.getRange(&quot;C&quot; + rowNum).setValue(grade);\n    \n    return &quot;Andmed on edukalt lisatud tabelisse!&quot;;\n}\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c onEdit (\u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435)\u00a0 \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0410 \u044d\u0442\u043e \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 \u0438 \u043d\u0441\u0442\u0440\u043e\u0438\u043b\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e \u043c\u0438\u043c\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0435\u0449\u0435 3 \u044f\u0437\u044b\u043a\u0430. \u0418\u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u043d\u043e \u0438 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438\u0439, \u042d\u0441\u0442\u043e\u043d\u0441\u0438\u0439 \u0438 \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 HTML Service (\u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430 \u0432 Google Spreadsheets) \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043d\u043e\u043f\u043a\u0443 puhasta \u043e\u043d\u0430 \u0441\u0442\u0438\u0440\u0430\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u043c\u043b \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u044d\u0441\u0442\u043e\u043d\u0441\u043a\u0438\u0439 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-828","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\/Portfolio \/ ee<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/\u0440\u0430\u0431\u043e\u0442\u0430-\u0441-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c-onedit-\u0440\u0435\u0430\u043a\u0446\u0438\u044f-\u043d\u0430-\u0438\u0437\u043c\u0435\u043d\u0435\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\/Portfolio \/ ee\" \/>\n<meta property=\"og:description\" content=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c onEdit (\u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435)\u00a0 \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0410 \u044d\u0442\u043e \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 \u0438 \u043d\u0441\u0442\u0440\u043e\u0438\u043b\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e \u043c\u0438\u043c\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0435\u0449\u0435 3 \u044f\u0437\u044b\u043a\u0430. \u0418\u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u043d\u043e \u0438 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438\u0439, \u042d\u0441\u0442\u043e\u043d\u0441\u0438\u0439 \u0438 \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 HTML Service (\u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430 \u0432 Google Spreadsheets) \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043d\u043e\u043f\u043a\u0443 puhasta \u043e\u043d\u0430 \u0441\u0442\u0438\u0440\u0430\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u043c\u043b \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u044d\u0441\u0442\u043e\u043d\u0441\u043a\u0438\u0439 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/\u0440\u0430\u0431\u043e\u0442\u0430-\u0441-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c-onedit-\u0440\u0435\u0430\u043a\u0446\u0438\u044f-\u043d\u0430-\u0438\u0437\u043c\u0435\u043d\u0435\/\" \/>\n<meta property=\"og:site_name\" content=\"Evgeniy Vasiliev\/Portfolio \/ ee\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-20T13:17:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png\" \/>\n\t<meta property=\"og:image:width\" content=\"947\" \/>\n\t<meta property=\"og:image:height\" content=\"316\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/\",\"url\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/\",\"name\":\"Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\\\/Portfolio \\\/ ee\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/image-18.png\",\"datePublished\":\"2025-03-20T12:09:40+00:00\",\"dateModified\":\"2025-03-20T13:17:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/#primaryimage\",\"url\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/image-18.png\",\"contentUrl\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/image-18.png\",\"width\":947,\"height\":316},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Lehtede lisandmoodulite ja skriptide arendamine.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/\",\"name\":\"Evgeniy Vasiliev\\\/Portfolio \\\/ ee\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/evgeniyvasiliev24.thkit.ee\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\/Portfolio \/ ee","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/\u0440\u0430\u0431\u043e\u0442\u0430-\u0441-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c-onedit-\u0440\u0435\u0430\u043a\u0446\u0438\u044f-\u043d\u0430-\u0438\u0437\u043c\u0435\u043d\u0435\/","og_locale":"et_EE","og_type":"article","og_title":"Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\/Portfolio \/ ee","og_description":"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c onEdit (\u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435)\u00a0 \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0410 \u044d\u0442\u043e \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 \u0438 \u043d\u0441\u0442\u0440\u043e\u0438\u043b\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e \u043c\u0438\u043c\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0435\u0449\u0435 3 \u044f\u0437\u044b\u043a\u0430. \u0418\u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u043d\u043e \u0438 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438\u0439, \u042d\u0441\u0442\u043e\u043d\u0441\u0438\u0439 \u0438 \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 HTML Service (\u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430 \u0432 Google Spreadsheets) \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0431\u0440\u043e\u043b \u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043d\u043e\u043f\u043a\u0443 puhasta \u043e\u043d\u0430 \u0441\u0442\u0438\u0440\u0430\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u043c\u043b \u044f\u0437\u044b\u043a \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u044d\u0441\u0442\u043e\u043d\u0441\u043a\u0438\u0439 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.","og_url":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/\u0440\u0430\u0431\u043e\u0442\u0430-\u0441-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c-onedit-\u0440\u0435\u0430\u043a\u0446\u0438\u044f-\u043d\u0430-\u0438\u0437\u043c\u0435\u043d\u0435\/","og_site_name":"Evgeniy Vasiliev\/Portfolio \/ ee","article_modified_time":"2025-03-20T13:17:40+00:00","og_image":[{"width":947,"height":316,"url":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/","url":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/","name":"Google Lehtede lisandmoodulite ja skriptide arendamine. - Evgeniy Vasiliev\/Portfolio \/ ee","isPartOf":{"@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/#primaryimage"},"image":{"@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/#primaryimage"},"thumbnailUrl":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png","datePublished":"2025-03-20T12:09:40+00:00","dateModified":"2025-03-20T13:17:40+00:00","breadcrumb":{"@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/"]}]},{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/#primaryimage","url":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png","contentUrl":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-content\/uploads\/2025\/03\/image-18.png","width":947,"height":316},{"@type":"BreadcrumbList","@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%82%d1%80%d0%b8%d0%b3%d0%b3%d0%b5%d1%80%d0%be%d0%bc-onedit-%d1%80%d0%b5%d0%b0%d0%ba%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/"},{"@type":"ListItem","position":2,"name":"Google Lehtede lisandmoodulite ja skriptide arendamine."}]},{"@type":"WebSite","@id":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/#website","url":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/","name":"Evgeniy Vasiliev\/Portfolio \/ ee","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"}]}},"_links":{"self":[{"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/828","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/comments?post=828"}],"version-history":[{"count":5,"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/828\/revisions"}],"predecessor-version":[{"id":842,"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/828\/revisions\/842"}],"wp:attachment":[{"href":"https:\/\/evgeniyvasiliev24.thkit.ee\/wp\/wp-json\/wp\/v2\/media?parent=828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}