Обновлено с более чистым примером:
Во-первых, лучший способ получить доступ к вашему GAS-скрипту из других мест - это, вероятно, опубликовать его как веб-приложение. Таким образом, скрипт может быть вызван через опубликованный URL. Основным требованием к веб-приложению является наличие в качестве точки входа функции doGet ().
Я уверен, что вы можете связать новый пункт меню Сайты Google только с другой страницей на этом же сайте. Таким образом, вы не можете вызывать WebApp (через его URL) прямо из меню. Но на этой новой странице Сайтов, к которой ведет вас пункт меню, вы можете:
- свяжите кнопку сайтов с URL-адресом веб-приложения (если это поможет) или
- встроить некоторый HTML-код с JavaScript на страницу, которая вызывается при загрузке страницы; немного сложнее, но это означает, что вызов веб-приложения будет автоматизирован.
Код ниже представляет собой простое веб-приложение, которое является связанной функцией на листе. Если вы опубликуете это (Опубликовать >> Развернуть как веб-приложение ...), а затем получите URL-адрес, который можно связать с кнопкой или вызовом со страницы.
function doGet(request){
addSong(request.parameter.song); // Call your own function.
var response = {status: "SUCCESS", data: request.parameter.song};
// Return the response.
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
function addSong(song) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow()
sheet.appendRow([numRows+1,song]);
}
Чтобы использовать кнопку, добавьте в нее следующую ссылку:
https://script.google.com/macros/s/<your web app ref>/exec?song=%22Bohemian%20Rhapsody%22
Приведенный ниже код является примером автоматического вызова WebApp из встроенного HTML-кода на веб-странице сайтов, доступ к которой осуществляется через меню. Существуют и другие способы вызова веб-приложения из JavaScript, но XMLHttpRequest () работает с большинством браузеров.
<!DOCTYPE html>
<html>
<body onload="test('https://script.google.com/macros/s/<your web app ref>/exec?song=StairwaytoHeaven') ;">
<p id="message">? </p>
<script>
function test(url) {
var XHR = new XMLHttpRequest();
XHR.onreadystatechange = function() {
if(XHR.readyState == 4) {
if(XHR.status == 200) {
console.log("SUCCESS: status = "+XHR.status);
document.getElementById("message").innerHTML = XHR.responseText;
console.log(XHR.responseText);
} else {
console.log("FAILURE: status = "+XHR.readystate+" "+XHR.status);
document.getElementById("message").innerHTML = "Failure";
}
}
}
XHR.open("GET", url + ((/\?/).test(url) ? "&" : "?") + Date.now()); // Add timestamp to disable caching, if required.
XHR.send();
return;
}
</script>
</body>
</html>