![](/img/trans.png)
[英]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.