微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apps脚本-Google表格-API调用-令牌头语法有问题 参考

如何解决Apps脚本-Google表格-API调用-令牌头语法有问题 参考

不确定如何对此标头不记名令牌部分语法化。.

...

// --------------------------------------------------------------------------------------------------
//
// 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,len,6).setValues(sortedOutput);
  
  // formatting
  sheet.getRange(15,6).setVerticalAlignment("middle");
  sheet.getRange(15,5,1).setHorizontalAlignment("center");
  sheet.getRange(15,2,3).setWrap(true);
  
}

...

这部分代码不起作用:

-标头'Content-Type:application / json'
--header'授权:Bearer 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 artist。但是我需要一个数字;)

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文档here

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);
}

参考

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。