【问题标题】:Trying to read data from a Google Spreadsheet尝试从 Google 电子表格中读取数据
【发布时间】:2018-04-19 02:29:22
【问题描述】:

我一直在尝试从电子表格中读取数据,该电子表格根据商品是否有货返回字符串。我刚刚开始这个项目,还没有将它与数值进行比较,但我已经遇到了读取数据和返回字符串的问题。对 Google 脚本真的很陌生,对此了解不多 - 任何建议都会有所帮助!提前致谢。

function OrganizeData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
  var data = ss.getDataRange().getValues();
  var message = "".toString();

  if (data[2].toString() == "Software" && data[3].toString() == "Garage Band") {
    return message = "Item is available!";

  } else if (data[2].toString() != "Software" && data[3].toString() == "Garage Band") {
    return message = "Current item is out of stock.";

  }
}

【问题讨论】:

  • 一些数据是什么样的?
  • 您希望return message = "some value"; 做什么?在您的情况下分配给message,然后再致电return message;或直接致电return "specific text";

标签: javascript google-apps-script


【解决方案1】:

您似乎错误地访问了数据集。您正在调用的 .getValues() 方法返回一个二维对象数组,并且您只访问该结构的第一个维度。除非整个行/列的连接是您要查找的字符串,否则初始 if 语句将失败。

希望这会有所帮助!

【讨论】:

  • 确实如此 - 我是 Google Script 的新手,谢谢!
  • 没问题,很高兴我能帮上忙!
【解决方案2】:

使用以下示例数据:

| ID | Name | Type     | Category    | In Stock                      | 
|----|------|----------|-------------|-------------------------------| 
| 1  | Foo  | Software | Garage Band | Item is available!            | 
| 2  | Bar  | Food     | Garage Band | Current item is out of stock. | 

我能够在“有货”单元格中添加消息。

function showMessage(sheetName, targetCol) {
  var activeSpreadsheet = SpreadsheetApp.getActive();
  var sheet = activeSpreadsheet.getSheetByName(sheetName);
  var data = sheet.getDataRange().getValues();

  for (var row = 1; row < data.length; row++) {
    var productType = data[row][2].toString();
    var productName = data[row][3].toString();
    var message = '';

    if (productType === "Software" && productName === "Garage Band") {
      message = "Item is available!";

    } else if (productType !== "Software" && productName === "Garage Band") {
      message = "Current item is out of stock.";
    }

    sheet.getRange(row + 1, targetCol).setValue(message);
  }
}

function OrganizeData() {
  showMessage('Form Responses 1', 5);
}

// Select `OrganizeData` from drop-down and run program

【讨论】:

  • 我在尝试运行代码时实际上仍然遇到错误。我不断收到“您无权调用 setValue(第 18 行)”。 - 'sheet.getRange(row + 1, targetCol).setValue(message); 所在的行
  • 您必须授权脚本在您的电子表格上运行。另外,请确保您正在修改列。
猜你喜欢
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多