如何在 Google WebApp 中显示存储在 Google Cloud Storage 上的图像而不将其公开?

问题描述 投票:0回答:1

我正在使用 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+'&param2='+param2+'&param3='+param3)
      .setOpenAs(CardService.OpenAs.OVERLAY)
      .setOnClose(CardService.OnClose.RELOAD))
      .build();   
}

我尝试遵循-

  1. 使用Urlfetch获取imageUrl。这正在创建一个重定向 url 并引发以下错误 -
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-apps-script google-cloud-platform google-cloud-storage
1个回答
0
投票

这是我查看 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.