Google apps script 使用应用程序脚本将过滤后的HTML web应用程序表数据发送回Google工作表
目前,我正试图从我的表格中提取过滤后的地区数据,并将其提交到我的google工作表中的一列。我可以手动将数据直接输入到我的谷歌工作表中,但我不知道如何提取我在数据中过滤的数据并将其输入到工作表中Google apps script 使用应用程序脚本将过滤后的HTML web应用程序表数据发送回Google工作表,google-apps-script,google-sheets,bootstrap-4,google-sheets-api,Google Apps Script,Google Sheets,Bootstrap 4,Google Sheets Api,目前,我正试图从我的表格中提取过滤后的地区数据,并将其提交到我的google工作表中的一列。我可以手动将数据直接输入到我的谷歌工作表中,但我不知道如何提取我在数据中过滤的数据并将其输入到工作表中 function onSuccess() { alert('Your request has ben submitted'); } function buttonFunction() { var table = document.getElementById("myTable&quo
function onSuccess() {
alert('Your request has ben submitted');
}
function buttonFunction() {
var table = document.getElementById("myTable");
var rows = table.getElementsByTagName("tr");
var cells = rows.getElementsByTagName("td");
var cellvalue = (cells[0].innerText);
google.script.run.withSuccessHandler(onSuccess).setValue(cellvalue);
}
function generateTable(dataArray) {
var tbody = document.getElementById("table-body");
var counter = 0;
for (var row in dataArray) {
var row = document.createElement("tr");
var col1 = document.createElement("td");
var col2 = document.createElement("td");
var col3 = document.createElement("td");
var col4 = document.createElement("td");
var col5 = document.createElement("td");
var col6 = document.createElement("td");
col1.textContent = dataArray[counter][0];
col2.textContent = dataArray[counter][1];
col3.textContent = dataArray[counter][2];
col4.textContent = dataArray[counter][3];
col5.textContent = dataArray[counter][4];
col6.textContent = dataArray[counter][5];
row.appendChild(col1);
row.appendChild(col2);
row.appendChild(col3);
row.appendChild(col4);
row.appendChild(col5);
row.appendChild(col6);
tbody.appendChild(row);
counter +=1;
}
}
function filterFunction() {
// Declare variables
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[3]
if (td ) {
txtValue = td.textContent || td.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
表格html
<table class="table table-hover" id="myTable"
data-custom-sort="customSort"
data-pagination="true"
data-ajax-options="ajaxOptions"
data-url="json/data1.json">
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
District
</button>
<input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Emery Unified</a>
<a class="dropdown-item" href="#">Mountain House Elementary</a>
</div>
</div>
<thead>
<tr>
<th scope="col">County</th>
<th scope="col">District</th>
<th scope="col">Position</th>
<th scope="col">Full Name</th>
<th scope="col">Date</th>
<th scope="col">Note</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
<input type="text" class="form-control" id="listName" placeholder="Type Name Here" aria-label="Username" aria-describedby="basic-addon1">
<button class="btn btn-dark" type="save" id="saveButton">Save</button>
</div> <!-- CLOSE AUTOFLOW -->
<button onclick='buttonFunction()'>Submit</button>
地区
县
地区
位置
全名
日期
注
拯救
提交
您可以忽略我额外的提交功能—我正在测试其他一些选项。我相信您的目标如下
function buttonFunction() {
var table = document.getElementById("myTable");
var values = [...table.querySelectorAll("tr")].reduce((ar, tr) => {
if (tr.style.display != "none") {
var temp = [...tr.querySelectorAll("td")].map((td) => td.innerHTML);
if (temp.some((e) => e.toString() != "")) ar.push(temp);
}
return ar;
}, []);
console.log(values); // Here, you can see the retrieved values at the console.
google.script.run.withSuccessHandler(onSuccess).setValue(values);
}
function setValue(value) {
var url = "###"; // Please set this.
var ss = SpreadsheetApp.openByUrl(url);
var targetSheet = ss.getSheetByName('Target Lists');
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, value.length, value[0].length).setValues(value);
}
- 您希望从HTML的过滤表中检索显示值,并将其放入Google电子表格
- 在HTML和Javascript上
- 在这种情况下,需要从
中的tr
中检索td
不是style.display
的值none
- 在这种情况下,需要从
- 在谷歌应用程序脚本上
- 似乎没有声明
和url
ws
- 我无法理解您对
的期望。targetSheet.getRange(1,ws.getLastColumn()+1,1,2).setValue(value)
- 因此,根据您的回复,我假设您希望在
的电子表格中将url
附加到value
targetSheet
- 因此,根据您的回复,我假设您希望在
- 似乎没有声明
function buttonFunction() {
var table = document.getElementById("myTable");
var values = [...table.querySelectorAll("tr")].reduce((ar, tr) => {
if (tr.style.display != "none") {
var temp = [...tr.querySelectorAll("td")].map((td) => td.innerHTML);
if (temp.some((e) => e.toString() != "")) ar.push(temp);
}
return ar;
}, []);
console.log(values); // Here, you can see the retrieved values at the console.
google.script.run.withSuccessHandler(onSuccess).setValue(values);
}
function setValue(value) {
var url = "###"; // Please set this.
var ss = SpreadsheetApp.openByUrl(url);
var targetSheet = ss.getSheetByName('Target Lists');
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, value.length, value[0].length).setValues(value);
}
修改脚本:
HTML和Javascript:
请修改按钮函数()
,如下所示
function buttonFunction() {
var table = document.getElementById("myTable");
var values = [...table.querySelectorAll("tr")].reduce((ar, tr) => {
if (tr.style.display != "none") {
var temp = [...tr.querySelectorAll("td")].map((td) => td.innerHTML);
if (temp.some((e) => e.toString() != "")) ar.push(temp);
}
return ar;
}, []);
console.log(values); // Here, you can see the retrieved values at the console.
google.script.run.withSuccessHandler(onSuccess).setValue(values);
}
function setValue(value) {
var url = "###"; // Please set this.
var ss = SpreadsheetApp.openByUrl(url);
var targetSheet = ss.getSheetByName('Target Lists');
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, value.length, value[0].length).setValues(value);
}
谷歌应用程序脚本:
请修改setValue(value)
如下
function buttonFunction() {
var table = document.getElementById("myTable");
var values = [...table.querySelectorAll("tr")].reduce((ar, tr) => {
if (tr.style.display != "none") {
var temp = [...tr.querySelectorAll("td")].map((td) => td.innerHTML);
if (temp.some((e) => e.toString() != "")) ar.push(temp);
}
return ar;
}, []);
console.log(values); // Here, you can see the retrieved values at the console.
google.script.run.withSuccessHandler(onSuccess).setValue(values);
}
function setValue(value) {
var url = "###"; // Please set this.
var ss = SpreadsheetApp.openByUrl(url);
var targetSheet = ss.getSheetByName('Target Lists');
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, value.length, value[0].length).setValues(value);
}
注:
- 从您的回复中,我假设您希望在
的电子表格中将url
附加到value
。如果我的猜测不正确,我能问一下你的目标的细节吗targetSheet
- 如果您正在使用Web应用,请在修改上述脚本后,将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
的信息,请将我在数据中筛选的数据拉出来并输入到工作表中。
。我能问一下细节吗?当然没问题!对于我的表,我有一个功能,通过搜索主管/教师的姓名来过滤我的学区表。我希望能够过滤我的表中的学区名称(在一列中),并将所有过滤的学区列表放入使用google sheets api的google sheets中的一列中。例如,如果我根据搜索栏中的输入筛选表中的3个学区,我希望能够按下一个按钮进行调用,并将一列填充到我选择的3个学区的google工作表中。我已经可以使用我创建的javascript方法对我的google工作表进行更改,但我不知道如何将过滤表中的信息添加到谷歌表单中。谢谢谢谢你的回复。我可以理解我的筛选表
。但我无法理解您想从将一列填充到我选择的3个学区的谷歌表格中做什么。所以,我根据我的猜测,为你的目标提出了修改后的脚本。你能确认一下吗?如果我的猜测不正确,我能问一下你的目标的细节吗?