簡體   English   中英

Apps 腳本 - Google 表格 - API 調用 - 令牌標頭語法問題

[英]Apps Script - Google Sheets -- API Call -- trouble with token header syntax

不知道如何語法這個..

...

// --------------------------------------------------------------------------------------------------
//
// iTunes Music Discovery Application in Google Sheets
//
// --------------------------------------------------------------------------------------------------

// custom menu
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('iTunes API Call')
      .addItem('Get Artist Data','displayArtistData')
      .addToUi();
}

// function to call iTunes API
function calliTunesAPI(artist) {
  
  // Call the iTunes API
  var response = UrlFetchApp.fetch("https://api.music.apple.com/v1/catalog/us/music-videos/{" + artist + "}");


  --header 'Content-Type:application/json' \
  --header 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO'


 
  // Parse the JSON reply
  var json = response.getContentText();
  return JSON.parse(json);
  
}


function displayArtistData() {
  
  // pick up the search term from the Google Sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var artist = sheet.getRange(11,3).getValue();
  
  var tracks = calliTunesAPI(artist);
  
  var results = tracks["results"];
  
  var output = []
  
  results.forEach(function(elem,i) {
    var image = '=image("' + elem["artworkUrl60"] + '",4,60,60)';
    var hyperlink = '=hyperlink("' + elem["previewUrl"] + '","Listen to preview")';
    output.push([elem["artistName"],elem["collectionName"],elem["trackName"],image,hyperlink]);
    sheet.setRowHeight(i+15,65);
  });
  
  // sort by album
  var sortedOutput = output.sort( function(a,b) {
    
    var albumA = (a[1]) ? a[1] : 'Not known';  // in case album name undefined 
    var albumB = (b[1]) ? b[1] : 'Not known';  // in case album name undefined
    
    if (albumA < albumB) { return -1; } else if (albumA > albumB) {
      return 1;
    }
    // names are equal
    return 0;
  });
  
  // adds an index number to the array
  sortedOutput.forEach(function(elem,i) {
    elem.unshift(i + 1);
  });
  
  var len = sortedOutput.length;
  
  // clear any previous content
  sheet.getRange(15,1,500,6).clearContent();
  
  // paste in the values
  sheet.getRange(15,1,len,6).setValues(sortedOutput);
  
  // formatting
  sheet.getRange(15,1,500,6).setVerticalAlignment("middle");
  sheet.getRange(15,5,500,1).setHorizontalAlignment("center");
  sheet.getRange(15,2,len,3).setWrap(true);
  
}

...

這部分代碼不起作用:

--header '內容類型:應用程序/json'
--header '授權:承載 eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO

不知道如何正確地表達這個。 我確定這是 101,但不確定答案。

以此為例,您應該能夠更新您的代碼。 祝你好運!

var url = "https://www.example.com"
var headers = {
  "Authorization": "Bearer ijfewfkjsfkjh4543",
  "Content-Type": "Application/json"
};

var options = {
  "method" : "get",
  "headers" : headers 
};

var response = UrlFetchApp.fetch(url, options);

編輯:這應該可以,但我看到 API 已關閉。 您可以刪除 var 藝術家。 但我需要一個數字;)

function calliTunesAPI(artist) { 
  var artist = 178834;
  var url = "api.music.apple.com/v1/catalog/us/music-videos"+artist; 
  var headers = { "Authorization": "Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO", 
                  "Content-Type": "Application/json" 
                }; 
  var options = { 
    "method": "get", 
    "headers": headers,
    "muteHttpExceptions": true
  }; 
  var response = UrlFetchApp.fetch(url, options).getContentText(); 
  var json = JSON.parse(response);
  console.log(json);
  
}

您可能想在此處查看UrlFetchApp文檔。

UrlFetchApp作用是獲取資源並通過 Internet 與其他主機通信。 由於您想要檢索一些數據,因此在發出請求時,您基本上必須包含bearerheaders

考慮到所有這些,您可以將函數重寫為:

function calliTunesAPI(artist) {
   var url = "https://api.music.apple.com/v1/catalog/us/music-videos/{" + artist + "}";
   var params = {
      "headers": {
         "Content-Type": "application/json",
         "Authorization": "Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO"
      }
      "method": "GET"
   }
   var response = UrlFetchApp(url, params);
   var json = response.getContentText();
   return JSON.parse(json);
}

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM