如何使Google应用脚本跳过错误并继续下一个项目
Google应用脚本 是一个脚本平台,允许您编写代码以自动化Google应用(如Google表格、Google文档和Gmail)中的任务。使用Google应用脚本,您可以创建自定义功能和脚本,用于扩展这些应用程序的功能。例如,您可以使用Google应用脚本在Google表格电子表格中创建一个自定义函数,以自动生成报告或执行计算。
它基于JavaScript,因此如果您对JavaScript有经验,您应该能够快速学习如何使用Google应用脚本。除了JavaScript之外,Google应用脚本还提供了许多内置库和类,可用于访问和操作Google应用中的数据。
使用Google应用脚本的关键优势之一是它允许您在不同的Google应用之间集成和自动化任务。例如,您可以使用Google应用脚本自动从Google表格电子表格中提取数据并将其用于在Google文档中创建新文件。这可以节省大量时间和精力,因为您可以自动化重复的任务,避免手动在不同应用程序之间传输数据。
总体而言,Google应用脚本是一个强大且灵活的工具,可以帮助您自动化任务并扩展Google应用的功能。无论您是初学者还是有经验的程序员,Google应用脚本都提供了许多可能性,以创建满足您特定需求的自定义解决方案。
运行应用脚本代码的设置: 以下是您可以按照的步骤来设置Google表格API项目并启用API并使用您的Google帐户进行身份验证:
步骤1: 转到Google Cloud控制台应用脚本。
应用脚本控制台
步骤2: 选择或创建您要用于Google表格API的项目。
选择 Sheets API
步骤 5: 启用 API。
API 选择
步骤 6: 转到凭据页面。
步骤 7: 点击“创建凭据”按钮,选择 OAuth 客户端 ID。
步骤 8: 选择“其他”应用程序类型,并给客户端 ID 命名(例如,“Google Sheets API 客户端”)。
步骤 9: 点击“创建”按钮以生成客户端 ID 和客户端密钥,这将在您的代码中用于身份验证。
步骤 10: 在使用 API 之前,在您的代码中安装必要的库并使用您的 Google 账号进行身份验证。
问题描述: 如何使我们的代码在解析 Google Sheet 时即使出现行错误也不停止运行。
假设我们正在解析一个包含 1000 行学生数据的 Google Sheet,以找到一些有用的学生见解,但某行数据无效,导致运行时出错。我们将看看如何处理这个问题。
示例: 这是一个 Google App Script 的示例,可用于扫描包含学生数据的 Google Sheets 电子表格中的 1000 个条目:
您可以通过转到 Google Sheets 菜单并选择“工具 > 脚本编辑器”来运行此脚本。然后,您可以将代码粘贴到脚本编辑器中并保存。最后,您可以通过在脚本编辑器中点击“播放”按钮来运行 scanStudentData() 函数。
// Async function to retrieve data from
// a Google Sheets spreadsheet and
// log it to the console
async function getSheetData() {
// Specify the spreadsheet ID
// and range of cells to access
const spreadsheetId = '1O6KRpqiwBDXd1nxLdO5TagfppoAfJo3fWqxe7J4VH9Y';
const rangeName = 'Sheet1!A:E';
try {
// Get the values from the spreadsheet
// using the specified ID and range
// The values property of the response
// object contains an array of rows
// from the specified range
const values = Sheets.Spreadsheets.Values
.get(spreadsheetId, rangeName).values;
// If no values are found, log a message and return
if (!values) {
console.log('No data found.');
return;
}
// Iterate over each row in the values array
for (const row in values) {
// Try to log the row, and
// log any errors that occur
try {
console.log(values[row]);
} catch (err) {
console.log(err);
}
}
} catch (err) {
// If there is an error getting
// the values from the spreadsheet,
// log the error message
console.log(err.message);
}
}
// Async function to call
// the getSheetData function
async function main() {
// Call the getSheetData function
await getSheetData();
}
这段代码安装所需的库,设置要访问的Google Sheets的ID,设置要从工作表中检索的单元格范围,设置Google Sheets API客户端,设置客户端的凭据,使用Sheets API从指定范围中检索数据,循环遍历工作表中的行,并对每行中的学生数据采取某些操作(在此示例中,只是将学生数据打印到控制台)。
解释:
- 这段代码使用Sheets API从Google Sheets电子表格中检索数据。
- 目标电子表格的ID和要访问的单元格范围被指定为常量。
- getSheetData函数被定义为异步,允许它使用await关键字在接收到API的响应之前暂停执行。
- getSheetData函数向Sheets API发出请求,以检索电子表格中指定范围的单元格。
- 如果API返回成功的响应,则将响应对象的values属性存储在values变量中。
- 如果响应中没有找到值,则将一条消息记录到控制台并返回该函数。
- 如果找到值,则记录一条指示正在打印的数据的消息到控制台。
- for循环遍历values数组中的每一行。
- try块尝试将当前行记录到控制台。
- 如果在记录行时发生错误,则catch块将错误记录到控制台。
- for循环中的try和catch块允许函数继续执行,即使在处理特定行时发生错误。
- 如果在进行API请求时发生错误,则在for循环外的catch块将错误消息记录到控制台。
- main函数被定义为异步,并使用await关键字调用getSheetData函数。
- main函数作为getSheetData函数的包装器,允许在代码的其他地方调用它。
getSheetData函数将电子表格中每个学生的姓名和专业记录到控制台。 - 要访问的单元格范围被指定为’Sheet1!A:E’,这意味着正在访问名为“Sheet1”的工作表上从A到E的所有单元格。
- for循环遍历values数组中的每一行,并记录第一列和第五列(索引0和4)中的值。
- for循环中的try和catch块允许函数继续执行,即使在处理特定行时发生错误。
- 如果在进行API请求时发生错误,则在for循环外的catch块将错误消息记录到控制台。
- 这段代码允许使用Sheets API从Google Sheets电子表格中检索和处理数据。
输出:
这个输出由代码中的console.log语句生成,它将工作表中每一行的学生数据打印到控制台。假设学生数据存储在工作表的前四列中(即A到D列),第一列包含学生的名字,第二列包含学生的姓氏,第三列包含学生的地址,第四列包含学生的城市。
阅读更多:JavaScript 教程