[英]How do I pull All data in one Google Sheet to another Google Sheet Tab using Google App Script?
[英]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.