javascript - Apps 脚本:在 HTML 中搜索和显示工作表内容
问题描述
我有一张有 5 列的表格。每列包含有关每个学生的以下信息:
- 答:全名
- B:教育程度
- C:每周家庭作业的数量
- D:每个家庭作业的成绩
- E:关于可能的个人改进计划的注释/建议
我想使用 Apps 脚本而不是公式来搜索任何学生并在 HTML 文件中显示该学生的详细信息。创建 HTML 文件并将其连接到我的脚本不是问题,因为我知道如何做到这一点并且之前已经做到了。但是我坚持修改脚本的方式,它允许我在工作表中搜索任何学生,并在(回调)函数/变量/数组或我可以调用/使用的任何内容中获取有关该学生的所有信息在我的 HTML 文件中。
非常感谢您在正确方向上提供的任何提示或建议。
当前代码可以找出指定学生在工作表中列出了多少次(因为一个学生可以在工作表中列出很多次并带有一些附加信息!!!),但我不知道如何从这里继续:(
function searchAndFindStudentData() {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheetname = ss.getSheetByName("SHEET_NAME");
var countStart = 0;
var lastColumn = sheetname.getLastColumn();
var lastRow = sheetname.getLastRow();
var sheetValues = sheetname.getRange(2, 1, lastRow, lastColumn).getValues();
for (var row in sheetValues) {
for (var colum in sheetValues[row]) {
if (sheetValues[row][colum] == "John Smith") {
countStart++;
}
}
}
Logger.log(countStart);
}
解决方案
这应该让你开始:
function searchAndFindStudentData() {
const ss = SpreadsheetApp.openById("SPREADSHEET_ID");
const sh = ss.getSheetByName("SHEET_NAME");
const vs = sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).getValues();
let info = {}
const r = SpreadsheetApp.getUi().prompt("Enter Student Name" , SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
if(r.getSelectedButton() == SpreadsheetApp.getUi().Button.OK) {
let name = r.getResponseText();
vs.forEach(r => {
if(r[0] == name ) {
if(!info.hasOwnProperty(name)) {
info[name] = {level:[],assignments:[],notes:[]}
} else {
if(r[1]) {
info[name].level.push(r[1]);
}
if(r[2] && r[3]) {
info[name].assignments.push([{num:r[2],grades:r[3]}]);
}
if(r[4]) {
info[name].notes.push(r[4]);
}
}
}
});
return info;
} else {
SpreadsheetApp.getUi().alert('Search Canceled');
}
}
推荐阅读
- node.js - NPM:如何在不调用“git”命令的情况下构建具有基于 git 的依赖项的项目?
- azure-iot-edge - IoT Edge 离线功能(未扩展)
- python - 为什么使用 numpy.random.seed 不是一个好习惯?
- django - Django Rest Framework 使用 SerializerMethodField 返回相对路径而不是完整 url
- html - 如何更改css过渡开始?
- xamarin.forms - Prism Forms 不再有 OnNavigatingTo。如何在 Views 的构造函数之前运行一些代码?
- ruby-on-rails - 如何添加可以在 database.yml 中使用的辅助方法?
- c# - 如何在 Unity android 项目中制作自定义 Firebase 事件?
- r - 每个面板中 facet_grid 中的唯一 y 轴(行和列)
- block - 阻止我的 vps 通过 sshd 连接到其他 vps/ip/port