我正在使用 Google Apps 脚本和 CardService 开发日历插件。它有几个输入框和一个提交按钮。提交信息后,网络应用程序被称为拥有图像。该网络应用程序是使用 Google Apps 脚本创建的。 该图像保存在 Google Cloud 存储桶中。我必须让组织中的所有人都能访问该图像,但又不需将其公开。我怎样才能实现这个目标?
整个代码过于庞大,因此仅分享与图像相关的代码。
let imgAction = CardService.newAction()
.setFunctionName('openImage')
.setParameters({cldImg: JSON.stringify(imgPath), preview: 'false'})
let submitButton = CardService.newTextButton()
.setText('Submit')
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setBackgroundColor("#00b300")
.setOnClickAction(imgAction)
let subBtn = CardService.newButtonSet()
.addButton(submitButton);
function openImage(){
return CardService.newActionResponseBuilder()
.setOpenLink(CardService.newOpenLink()
.setUrl(imageUrl+'?param1='+param1+'¶m2='+param2+'¶m3='+param3)
.setOpenAs(CardService.OpenAs.OVERLAY)
.setOnClose(CardService.OnClose.RELOAD))
.build();
}
我尝试遵循-
Exception: Request failed for https://script.google.com returned code 302. Truncated server response: <HTML>
<HEAD>
<TITLE>Moved Temporarily</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Temporarily</H1>
The document has moved <A... (use muteHttpExceptions option to examine full response)
at openFloorMap(formActions:386:31)
这是我查看 Google 照片库中的图像的方法
function listImagesDialog1() {
var token = '';
var html = '';
var n = 0;
do {
var params = { muteHttpExceptions: true, headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() } };
var url = Utilities.formatString('https://photoslibrary.googleapis.com/v1/mediaItems?pageSize=100%s', (token != null) ? "&pageToken=" + token : "");
var resp = UrlFetchApp.fetch(url, params);
var js = JSON.parse(resp.getContentText());
for (var i = 0; i < js.mediaItems.length; i++) {
let dt = new Date(js.mediaItems[i].mediaMetadata.creationTime);
let date = Utilities.formatDate(dt,Session.getScriptTimeZone(),"MMM dd, yyyy");
html += Utilities.formatString('<br />%s - File Name: %s<br />MediaItemId: %s<br />Width: %s Height: %s Date: %s<br /><img src="%s" width="265"/>', ++n, js.mediaItems[i].filename, js.mediaItems[i].id, js.mediaItems[i].mediaMetadata.width, js.mediaItems[i].mediaMetadata.height, date, js.mediaItems[i].baseUrl);
}
token = js.nextPageToken;
} while (token != null);
var userInterface = HtmlService.createHtmlOutput(html).setWidth(1200).setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Images')
//SpreadsheetApp.getUi().showSidebar(userInterface);
}