【问题标题】:Check whether Google Sheets cells contain values using Google Apps Script使用 Google Apps 脚本检查 Google 表格单元格是否包含值
【发布时间】:2016-06-03 07:06:40
【问题描述】:

在谷歌应用程序脚本中,我从谷歌表中提取数据(所有字符串),然后尝试将数组拆分为单独的列,不包括第一行(标题行)。数据具有任意数量的行和列。 “项目”是标题,“任务”是每个标题下的数据。

  // load in task names
  function LoadTasks() {
    var sheet = ss.getSheetByName("Task List");
    sheet.activate();

    var allTasks = sheet.getDataRange().getValues();

    return allTasks;
  }


  function Analysis(project, tasks) {
    var sheet = ss.getSheetByName(project);
    sheet.activate;

    var taskLength = tasks.length;
    var sheetLength = (taskLength*4) + 10;

    Logger.log("The Project is " + project + " with task length of " +       taskLength + " and task data of: " + tasks);
  }

  taskData = LoadTasks();
  numProjects = taskData[0].length;
    // load all project names into single array
  for (i = 0; i < numProjects; i++) {
    projectNames[i] = taskData[0][i];
  }

  for (i = 0; i < numProjects; i++) {
    project = projectNames[i];
    j = 1;
    while (taskData[j][i] != null) {
      tasks[j-1] = taskData[j][i];
      j++;
    }
    Analysis(project, tasks)
    tasks = [];
  }

在最后一个 while 循环中,我如何检查我正在查看的数组值是否包含一个值(不包含 null、未定义或空白)。我当前的方法给了我错误:无法从未定义中读取属性“0.0”。 (第 91 行,文件“代码”)

***第 91 行:while (taskData[j][i] != null) {

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    getValues() 方法返回一个双精度数组,该数组可以是数字、字符串或 Date 对象。值之间没有“null”或“undefined”。空白单元格表示为空字符串"",您可以通过与"" 比较来检测它们。

    也就是说,应该明确控制索引范围:

    while (j < taskData.length && taskData[j][i] !== "") {
      tasks[j-1] = taskData[j][i];
      j++;
    }
    

    【讨论】:

    • 该修复工作完美!谢谢。因此,如果我理解正确,其中一个错误是循环迭代到它正在检查 getValue 范围之外的值,大于 taskData 的长度。该数据(在 getDataRange 范围之外)是否被视为未定义?
    猜你喜欢
    • 2017-05-30
    • 2020-07-27
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多