onclick排序表数据 在Google-App脚本中>] 我正在尝试对表中的数据(升序或降序)进行排序。为此,每当我单击每个标题时,我都希望对VL日期和申请日期/时间进行排序。但是,我当前的代码每次单击都不会执行任何操作。但是,当我在静态数据上尝试它时,它就起作用了。 下面是我的代码: <? var data = SpreadsheetApp .openById('sheet ID') .getSheetByName("VL Request") .getDataRange() .getValues(); var timeStamp = [0]; var rid = [1]; var ldap = [2]; var aname = [7]; var lob = [9]; var dovl = [5]; var rol = [6]; var tlapprov = [12]; var tlrem = [14]; var stat = [13]; var schedrem = [11]; var tl = [3]; var pocldap = [15]; var omldap = [16]; var userName = Session.getEffectiveUser().getUsername(); ?> <table id="vllist" class="vllist2"> <tr> <th colspan=11>POC VIEW</th> </tr> <tr> <th colspan=11>Application for Date Range: <?= [formattedStart] ?> - <?= [formattedEnd] ?></th> </tr> <tr> <th style="display:none;">Request ID</th> <th>LDAP</th> <th>Agent Name</th> <th>Lane</th> <th onclick="sortTable(4)">Date of VL</th> <th>Reason of Leave</th> <th>POC Approval</th> <th>POC Remarks</th> <th>Scheduler's Approval</th> <th>Scheduler's Remarks</th> <th onclick="sortTable(10)">Date/Time of Application</th> </tr> <? for (var i = 1; i < data.length; i++) { ?> <tr> <? if ((data[i][tlapprov] === "Pending") && ((data[i][pocldap] === userName) || (data[i][omldap] === userName)) && (data[i][dovl] >= startDate) && (data[i][dovl] <= endDate)) { ?> <? var vldate = data[i][dovl]; var formattedDateVL = (vldate.getMonth()+1) + '/' + vldate.getDate() + '/' + vldate.getYear(); ?> <td class="hide"> <?= data[i][rid] ?> </td> <td> <?= data[i][ldap] ?> </td> <td> <?= data[i][aname] ?> </td> <td> <?= data[i][lob] ?> </td> <td> <?= [formattedDateVL] ?> </td> <td> <?= data[i][rol] ?> </td> <td> <?= data[i][tlapprov] ?> </td> <td> <?= data[i][tlrem] ?> </td> <td> <?= data[i][stat] ?> </td> <td> <?= data[i][schedrem] ?> </td> <td class="lefttext"> <?= data[i][timeStamp] ?> </td> <? } ?> </tr> <? } ?> </table> <script> function sortTable(n) { var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0; table = document.getElementById("vllist"); switching = true; dir = "asc"; while (switching) { switching = false; rows = table.rows; for (i = 1; i < (rows.length - 1); i++) { shouldSwitch = false; x = rows[i].getElementsByTagName("TD")[n]; y = rows[i + 1].getElementsByTagName("TD")[n]; if (dir == "asc") { if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { shouldSwitch = true; break; } } else if (dir == "desc") { if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { shouldSwitch = true; break; } } } if (shouldSwitch) { rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; switchcount ++; } else { if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } </script> 我正在尝试对表中的数据(升序或降序)进行排序。为此,每当我单击每个标题时,我都希望对VL日期和申请日期/时间进行排序。但是,我当前的代码不是...

问题描述 投票:0回答:3

我正在尝试对表中的数据(升序或降序)进行排序。为此,每当我单击每个标题时,我都希望对VL日期和申请日期/时间进行排序。但是,我当前的代码每次单击都不会执行任何操作。但是,当我在静态数据上尝试它时,它就起作用了。

javascript google-apps-script
3个回答
0
投票

我将正常调用DATA到表中...然后使用JS对HTML表中的记录进行排序。


0
投票

这里是一个简单的解决方案,通过单击标题行上方的复选框,可以在电子表格中进行排序。


0
投票

根据带有Apps脚本的Best Practices for UI,您应该load your data asynchronously

© www.soinside.com 2019 - 2024. All rights reserved.