代码之家  ›  专栏  ›  技术社区  ›  Punchlinern

谷歌电子表格中的HTTP Get,“e undefined”

  •  1
  • Punchlinern  · 技术社区  · 11 年前

    我想用 HTTP Get 在Google电子表格中,能够创建 URL 到纸张中的特定单元格。
    我一直在寻找如何做到这一点,并尝试使用 this way ( GET 部分)。

    这是我整理的代码:

    function doGet(e){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Kunder");
      var row = e.parameter["row"];
      var col = e.parameter["col"];
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var range = sheet.getRange(row, col);
      SpreadsheetApp.setActiveSheet(sheet);
      SpreadsheetApp.setActiveRange(range);
    }
    

    这是一个例子 统一资源定位地址 :

    https://docs.google.com/spreadsheets/d/[spreadsheet ID]/edit?row=5&col=1
    

    当我运行脚本时,会出现以下错误:

    TypeError: Cannot read property "parameter" from undefined.
    

    我做错了什么?或者这不可能吗?

    提前感谢,
    奥斯卡

    编辑
    这是我的当前代码:

    function doGet(e){
      var ss = SpreadsheetApp.openById("[id]");
      SpreadsheetApp.setActiveSpreadsheet(ss);
      var sheet = ss.getSheetByName("Kunder");
      var row = Number(e.parameter.row);
      var col = Number(e.parameter.col);
    
      var range = sheet.getRange(row, col);
      SpreadsheetApp.setActiveSheet(sheet);
      SpreadsheetApp.setActiveRange(range);
    }
    

    代码运行,但以

    The script completed but did not return anything.
    

    我想打开电子表格,然后从 获取 参数。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Serge insas    11 年前

    您显示的url无效。

    要使用这种脚本,必须将脚本部署为webapp,并使用生成的.exec url和参数。

    最后,它将如下所示:

    https://script.google.com/macros/s/AKfycbygwUwXXXXXXXXxJcKpBvsbflmnZ0Uqfu-JISWTZNvar32s3v_hl/exec?row=5&col=1
    

    EDIT:在该上下文中没有活动的Sheet,请使用 openById openByUrl 相反 此外,行和列的值都是字符串,您应该将它们设置为整数,并使用 sheet.getRange(row,col) 选择范围。

    编辑2:

    此url:

    https://script.google.com/macros/s/AKfycbwZbGW6E483BUplvLjCjNCXKjjiRorqzR9lruSydogeuU-YIvID/exec?row=1&col=1
    

    该代码:

    function doGet(e){
      var ss = SpreadsheetApp.openById("1sbJXuEpL_88-u-Bm4QOCAM3SVddFwZKI0c1kxeRpcos");
      var sheet = ss.getSheetByName("Sheet1");
      var row = Number(e.parameter.row); 
      var col = Number(e.parameter.col); 
      var range = sheet.getRange(row, col);
      sheet.getRange(row, col).setValue('test ok')
    }
    

    写入 this sheet :参见单元格A1或在另一行和列上进行测试。

    您确实会收到一条消息,没有返回任何内容,这实际上是真的!我们没有返回该代码中的任何内容,这只是一个演示;-)


    编辑3:如注释中所述,要获取此函数返回的内容,您必须重新转换一些内容。。。

    下面是一个示例:

    function doGet(e){
      var ss = SpreadsheetApp.openById("1sbJXuEpL_88-u-Bm4QOCAM3SVddFwZKI0c1kxeRpcos");
      var sheet = ss.getSheetByName("Sheet1");
      var row = Number(e.parameter.row); 
      var col = Number(e.parameter.col); 
      var range = sheet.getRange(row, col);
      var value = sheet.getRange(row, col).getValue();
      sheet.getRange(row, col).setValue('test ok');
      var stringValue = value==''?'empty':value;
      Logger.log(stringValue);
      return ContentService.createTextOutput(stringValue).setMimeType(ContentService.MimeType.TEXT);
    }