首页 > 解决方案 > Google 表格变量不起作用,硬编码字符串起作用

问题描述

我正在尝试使用 Google Sheets 自定义函数调用 http rest url。

这有效

function getProductDetailsbyEAN(EANCode) {
  EANCode = '8901719255137'
  if (EANCode == undefined) {
    Logger.log("EANCode undefined") ;
    return "undefined EANCode"
  }

  //EANCode = "'" + EANCode + "'"
  Logger.log(EANCode)  
  var formData = {
    'gtins': [EANCode],
  };
  Logger.log(formData.toString())

  var options = {
    'method' : 'post',
    'headers' : { 'Authorization':'Bearer mysecuritycode', 'content-type': 'application/json' },
    'payload' : JSON.stringify(formData)
  };
  var URL = "http://myurl"
  var response = UrlFetchApp.fetch(URL, options);
  response = response.toString() ;
  if (response.indexOf("returned code 404") != -1) {
    Logger.log("ResponseError");
    Logger.log(response) ;
    return "ResponseError" ;
  }
  var jsonResponse = JSON.parse(response) ;
  var jsonResponseItems = jsonResponse['items']
  var jsonResponseZerothItem = jsonResponseItems[0] ;
  Logger.log(jsonResponseZerothItem) ;
  return jsonResponseZerothItem ;
  SpreadsheetApp.flush();
}

但是,如果我尝试通过它没有的参数使其工作,则返回 404

这不起作用

function getProductDetailsbyEAN(EANCode) {
  //EANCode = '8901719255137'
  if (EANCode == undefined) {
    Logger.log("EANCode undefined") ;
    return "undefined EANCode"
  }

  EANCode = "'" + EANCode + "'"
  Logger.log(EANCode)  
  var formData = {
    'gtins': [EANCode],
  };
  Logger.log(formData.toString())

  var options = {
    'method' : 'post',
    'headers' : { 'Authorization':'Bearer myscuritycode', 'content-type': 'application/json' },
    'payload' : JSON.stringify(formData)
  };
  var URL = "http://myurl"
  var response = UrlFetchApp.fetch(URL, options);
  response = response.toString() ;
  if (response.indexOf("returned code 404") != -1) {
    Logger.log("ResponseError");
    Logger.log(response) ;
    return "ResponseError" ;
  }
  var jsonResponse = JSON.parse(response) ;
  var jsonResponseItems = jsonResponse['items']
  var jsonResponseZerothItem = jsonResponseItems[0] ;
  Logger.log(jsonResponseZerothItem) ;
  return jsonResponseZerothItem ;
  SpreadsheetApp.flush();
}

我错过了一些关于参数传递的非常基本的东西。请指教。

标签: google-apps-scriptgoogle-sheets

解决方案


我认为在您的情况下,似乎EANCode需要将其用作字符串。那么这个改装怎么样呢?

请在您的问题中修改以下脚本,如下所示。

从:

EANCode = "'" + EANCode + "'"

至:

EANCode = EANCode.toString();

笔记:

  • 8901719255137小于Number.MAX_SAFE_INTEGER9007199254740991_ 所以我认为你可以使用.EANCode.toString()
  • 根据您的问题,我无法确认调用的方法getProductDetailsbyEAN(EANCode)。所以如果上述修改不是直接的解决方案,你能提供调用脚本getProductDetailsbyEAN(EANCode)吗?

参考:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。


推荐阅读