【发布时间】:2016-07-03 17:10:01
【问题描述】:
我正在尝试制作的我的 Google Apps 脚本网络应用程序有一个按钮,用户可以单击该按钮并将其名称添加到其中。我正在尝试将这些信息保存为网站上的列表,这样如果我刷新页面,它仍然存在,并且如果其他人正在访问该网站,它仍然存在。
这是添加按钮 - https://snag.gy/EOgx5T.jpg
这些是从按钮添加的示例名称 - https://snag.gy/8GtX3Y.jpg
我不想将其保存为本地存储。有没有办法将信息保存到 Google 电子表格并将该电子表格用作数据库或其他东西?
索引.html<div id="artistTabs">
<ul id="artistList">
<li><a onClick="addArtist(); return false;" href="">+</a></li>
</ul>
</div>
js.html
function addArtist()
{
console.log("add artist here");
var artistName = prompt("enter artist whole first name and initial of last name");
if (artistName === "") //user pressed 'ok' but input field was empty
{
return;
}
else if (artistName != "" && artistName !== null) //user inputs something and hits 'ok'
{
var ul = document.getElementById("artistList");
var li = document.createElement("li");
var a = document.createElement("a");
a.setAttribute("href", "#");
a.textContent = artistName;
li.appendChild(a);
ul.appendChild(li);
li.onclick = function()
{
test(); return false;
};
}
else //user hits 'cancel' or 'x'
{
return;
}
}
function test()
{
console.log("test");
}
我是否需要在 Google Apps 脚本“xxx.gs”或“xxx.js”文件中添加某些内容以保存信息/访问数据库/某些内容?
编辑
我更新了一些代码。我可以将艺术家写入电子表格,然后我可以从电子表格中取回艺术家姓名。我仍然对如何将列表中的新项目显示为模板化 html 感到困惑。
索引.html<div id="artistTabs">
<ul id="artistList">
<li><a onClick="addArtist(); return false;" href="">+</a></li>
</ul>
</div>
js.html
function addArtist()
{
var artistName = prompt("enter artist whole first name and initial of last name");
if (artistName === "") //user pressed 'ok' but input field was empty
{
return;
}
else if (artistName != "" && artistName !== null) //user inputs something and hits 'ok'
{
google.script.run
.withSuccessHandler(writeSuccess(artistName))
.withFailureHandler(writeFailure)
.writeArtistName(artistName);
}
else //user hits 'cancel' or 'x'
{
return;
}
}
function writeSuccess(artistName)
{
console.log("write success: " + artistName);
}
function writeFailure()
{
console.log("write failure - email myself why it failed and the time it failed");
}
代码.gs
var ss = SpreadsheetApp.openById('id');
var sheet = ss.getSheets()[0];
function doGet()
{
return HtmlService.createTemplateFromFile('index').evaluate();
}
function getContent(filename)
{
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function writeArtistName(artistName)
{
var lastRow = sheet.getLastRow() + 1; //gets next unused row
var column = 1; //first column
var lastCell = sheet.getRange(lastRow, column);
lastCell.setValue(artistName); //sets next blank row as artistName
}
function getArtistName()
{
var lastRow = sheet.getLastRow(); //gets last row with content
var column = 1;
var lastArtist = sheet.getRange(lastRow, column).getValue(); //gets last row with artistName
Logger.log(lastArtist);
var x = '<li><a onClick="test(); return false;" href="#">';
var y = lastArtist;
var z = '</a></li>';
var xyz = x + y + z;
Logger.log(xyz);
}
如何调用code.gs文件中的getArtistName()函数,将艺术家姓名设置为我的无序列表中的列表项,并在网站上显示为html模板?我不能在 .gs 文件中调用 document.getElementById,因为它说的是 ReferenceError: "document" is not defined。
即使我重新加载页面,我也需要将列表保留在网站上,并且任何人都可以从任何地方访问它
【问题讨论】:
-
最好的选择可能是 PHP
-
@WilliamBrochmann 你能详细说明我将如何使用 php 吗?
-
你可以用
cookie之类的,我推荐你here -
@nmnsud 它说“默认情况下,关闭浏览器时会删除 cookie”。我需要用户输入的信息永久保存在网站上,即使在页面刷新/关闭并再次打开之后也是如此。
-
您可以轻松地将数据从您的 Apps Script Web App 保存到电子表格中。您将需要使用
google.script.run.myServerGS_function()从 Web 应用程序与服务器代码进行交互。我假设您有一个doGet()函数将 HTML 提供给浏览器?并且您至少发布了一个版本? Link to Apps Script Documentation - google.script.run client side API
标签: javascript html google-apps-script google-sheets