Google apps script 使用应用程序脚本将过滤后的HTML web应用程序表数据发送回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

目前,我正试图从我的表格中提取过滤后的地区数据,并将其提交到我的google工作表中的一列。我可以手动将数据直接输入到我的谷歌工作表中,但我不知道如何提取我在数据中过滤的数据并将其输入到工作表中

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个学区的谷歌表格中做什么。所以,我根据我的猜测,为你的目标提出了修改后的脚本。你能确认一下吗?如果我的猜测不正确,我能问一下你的目标的细节吗?