2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
所以基本上感謝 Mateo 的指點(diǎn),我能夠使用這個(gè)腳本更新項(xiàng)目元數(shù)據(jù):
function alex_test_function() {
// get existing oauth token
var theAccessTkn = ScriptApp.getOAuthToken();
// get existing project metadata
var response =
UrlFetchApp.fetch('https://compute.googleapis.com/compute/v1/projects/myProject', {
headers: {
Authorization: 'Bearer ' + theAccessTkn
}
});
var data = JSON.parse(response.getContentText());
var metadata = data.commonInstanceMetadata
fingerprint = metadata.fingerprint;
new_metadata_items = metadata.items;
// update metadata
var timestamp = new Date().getTime()
setMetaKey(new_metadata_items, Session.getActiveUser().getEmail().split("@")[0], timestamp)
var formData = {
'fingerprint': fingerprint,
'items': new_metadata_items
};
var postresponse = UrlFetchApp.fetch("https://compute.googleapis.com/compute/v1/projects/myProject/setCommonInstanceMetadata", {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(formData),
'headers': {
Authorization: 'Bearer ' + theAccessTkn
}
});
}
function setMetaKey(metadata, key, value){
// Function to add metadata or update if exists
for (var i = 0; i < metadata.length; i++) {
if (metadata[i].key === key) {
metadata[i].value = value;
return;
}
}
metadata.push({key:key, value:value});
}
一些陷阱,我們需要將 OAuth 范圍設(shè)置為 AppScript 清單
{
"timeZone": "America/New_York",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/script.external_request"]
}
并且運(yùn)行腳本的用戶需要具有編輯 GCP 項(xiàng)目中的項(xiàng)目元數(shù)據(jù)的權(quán)限。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
不幸的是,在回答這個(gè)問題時(shí),Apps 腳本中沒有方法或類來更改 Google Cloud 項(xiàng)目的元數(shù)據(jù)。但是,您可以使用Properties Service類獲取和修改文檔、腳本或用戶元數(shù)據(jù)。
但是,如果您想以編程方式編輯 GCP 項(xiàng)目屬性,則需要使用Google Cloud API,因?yàn)樗试S您從gcloud
、其 API 或整個(gè)控制臺(tái)修改這些屬性。
添加回答
舉報(bào)