繁体   English   中英

如何让 Snipe-IT API 使用 Google 应用脚本检索数据并将其填充到 Google 表格中?

[英]How do I get Snipe-IT API to retrieve data using a Google App Script and populate it on a Google Sheet?

我正在尝试在 Google Data Studio 上创建我们在 Snipe-IT 资产管理上的数据的可视化。 为此,我正在创建一个带有 App Script 扩展的 Google Sheets 电子表格,它将与 Snipe-IT API 通信,检索数据并将其填充到 Google Sheet 上。 到目前为止,我已经能够让 API 在终端上填充我们的一些数据,而不是在电子表格本身上。

我写了一个简单的脚本,它应该列出分配给一个特定用户的资产,用于测试目的。 同样,该脚本运行良好,它在终端上填充了我需要的数据,但不在 Google 表格上。 这是我的确切代码(不包括设置部分详细信息):


//SETUP
serverURL = 'SERVER-URL'; (ignore)
apiKey = 'API-KEY' (ignore)

function onOpen(e) {
  createCommandsMenu();
}

function createCommandsMenu() {
  var ui = SpreadsheetApp.getUi();
      ui.createMenu('Run Script')
      .addItem('Get Assets By Department', 'runGetAssetsByDepartment')
      .addToUi();
}

function testGetAssetsByUser(){
  getAssetsByUser("1745")
}
//Get assets for a user by id
//Returns a list of assets by id
function getAssetsByUser(userID) {
  
  var url = serverURL + 'api/v1/users/' + userID + '/assets';
  var headers = {
    "Authorization" : "Bearer " + apiKey
  };
  
  var options = {
    "method" : "GET",
    "contentType" : "application/json",
    "headers" : headers
  };
  
  var response = JSON.parse(UrlFetchApp.fetch(url, options));
  var rows = response.rows;
  var assets = []
  
  for (var i=0; i<rows.length; i++) {
    var row = rows[i];
    if (row.category.name == "Laptop" || row.category.name == "Desktop" || row.category.name == "2-in-1") {
      var asset = row.id
      assets.push(asset)
    }
  }
  return assets
}

console.log(getAssetsByUser(1745));

有几种方法可以将值写入电子表格

基础知识

获取电子表格

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

这适用于有界项目和附加组件

抓住目标表

var sheet = spreadsheet.getSheetByName('put here the sheet name');

如果您的电子表格只有一张工作表,您可以使用SpreadsheetApp.getActiveSheet() ,但对于从自定义菜单调用的函数,这个是有风险的。

将值写入目标工作表

准备工作:制作二维数组

var output = assets.map(v => [v]);

做:将值写入目标工作表

sheet.getRange(1,1,output.length, 1).setValues(output);

资源

暂无
暂无

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

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