繁体   English   中英

在 Google Scripts 中调用 API 以填充到 Google Sheets

[英]Call API in Google Scripts to populate in Google Sheets

我想弄清楚如何将请求发送到 URL,以便它填充在 Google 表格中。 此时日志抛出错误“未找到订单”。 这是我第一次为该请求编写脚本。 到目前为止,我有:

function myFunction() {
  var data = {
            "date":"2021-07-01",
            "reference":"REFERENCE",
            "products":[
              {
               "id":"31565598851174",
               "quantity":15
             },
             {
               "id":"31424655589478",
               "quantity":10
             }
            ]
          }
  var options = {
    'method' : 'post',
   'contentType': 'application/json',
    // Convert the JavaScript object to a JSON string.
    'payload' : JSON.stringify(data)
  };
  var url = "https://stockists.rerootedorganic.co.uk/api/order/?key=example"
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}

我认为问题可能出在query的语法上。 任何帮助确定我做错了什么都会很棒,谢谢。

错误:

Execution log
11:45:18 AM Notice  Execution started
11:45:19 AM Info    
{"error":{"message":"Order not found"}}
11:45:19 AM Info    null
11:45:20 AM Info    
{"error":{"message":"Order not found"}}
11:45:20 AM Info    {error={message=Order not found}}
11:45:19 AM Notice  Execution completed

调整此代码

function myFunction() {
  var url = 'https://stockists.rerootedorganic.co.uk/api/order/?key=example&date='
  var when = '2021-07-01' // string format
  var data = JSON.parse(UrlFetchApp.fetch(url+when).getContentText())
  Logger.log(data.order.reference)
  for (var i=0;i<data.order.products.length;i++){
    Logger.log(data.order.products[i].id + ' qty: ' + data.order.products[i].quantity)
  }
}

填充工作表

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('** Menu **')
    .addItem('request','myFunction')
    .addToUi();
}
function myFunction() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var d = Utilities.formatDate(sh.getRange('B3').getValue(), "GMT+2", "yyyy-MM-dd")
  var url = sh.getRange('B1').getValue() + '?key=' + sh.getRange('B2').getValue() + '&date=' + d
  var data = JSON.parse(UrlFetchApp.fetch(url).getContentText())
  for (var i=0;i<data.order.products.length;i++){
    sh.appendRow([data.order.reference,data.order.products[i].id,data.order.products[i].quantity])
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM