javascript - Google App Script:识别代码的性能/执行速度瓶颈部分
问题描述
Google App Script:识别代码的性能/执行速度瓶颈部分。就技术而言,任何人已经在这方面取得了一般性的成功吗?你能分享你的例子吗?
下面是我从 Google ClassRoom 输出带有简单表格的 HTML 网页的小脚本。到目前为止,我对这些技术还很陌生,但我正在努力在学习方面取得进步。
此脚本最多输出 100-150 个表行。无法理解为什么脚本运行超过 5-8 分钟才能完成其工作并最终输出那些 100-150 行的 HTML 表。
也许我使用数组错误的方式或其他什么?或者可能是 Google App Script 的本质是整体运行缓慢?
function doGet() {
var res = listCoursesHTML();
var html = HtmlService.createHtmlOutput();
html.append("<table border = \"1\">");
html.append("<tr><th>Имя преподавателя</th><th>Почта</th><th>Название курса</th><th>Название ОП (Учебная группа)</th></tr>");
for(result in res)
{
html.append("<tr><td>"+res[result].Name +"</td><td>"+res[result].email +"</td><td>"+res[result].courseName +"</td><td>" +res[result].courseDescription+"</td></tr>");
}
html.append("</table>");
//return HtmlService.createHtmlOutput(out[0]);
return html;
}
function listCoursesHTML() {
var courses = [];
var ownerId = [];
var pageToken = null;
var optionalArgs = {
pageToken: pageToken,
pageSize: 9999
};
var results = [];
while (true) {
var response = Classroom.Courses.list(optionalArgs);
// @ts-ignore
var courses = response.courses;
if (!pageToken) {
break;
}
}
if (courses.length === 0) {
Logger.log("No courses found.");
} else {
Logger.log("Courses:");
// @ts-ignore
for (course in courses) {
// @ts-ignore
results.push({
"Name": getName(courses[course].ownerId),
"email": getEmail(courses[course].ownerId),
"courseName": courses[course].name,
"courseDescription": courses[course].description
});
}
}
return results;
}
function getEmail(id) {
return Classroom.UserProfiles.get(id).emailAddress;
}
function getName(id) {
return Classroom.UserProfiles.get(id).name.fullName;
}
解决方案
Apps 脚本提供了一个关于最佳实践的良好指南,以保持您的代码干净,特别是为了保持它的效率。
推荐阅读
- java - 在另一个 Activity 中将字符串(或数组)传递给 ListView(NPE 错误)
- javascript - CKEditor5 - 使 Mention 与 Markdown 一起工作
- python - 如何在 Windows 上读取文件夹中的文本文件并写入 Kafka Topic
- r - R igraph edgelist to adjacency matrix 如何修剪0块?
- c++ - 如何在 std::map 的向量中重载 []
- python-2.7 - Ubuntu ros virtualenv 不会创建空的 pip 列表
- arduino - Bop it Arduino 电路游乐场
- reactjs - 在 react native 中使用 ant-design 的标签栏时如何解决这个问题?
- excel - 向 SUMPRODUCT 或 SUMIFS 公式添加条件
- sql - 标准 SQL 和 Teradata 强制转换语法之间的语义差异