小编zig*_*hka的帖子

Google App Script Deploy as Web App 卡在获取数据

我正在 G Suite 中为我的公司开发一个内部应用。我在电子表格应用程序中使用了一个模态对话框。我找不到在 Drive for mobile 上执行此操作的方法,因此我决定将其部署为 Web 应用程序。我从来没有在应用程序脚本中使用过这个功能,所以我决定在将它应用到我的活动项目之前设置一个新项目来处理。我在项目中有两个文件;代码.gs

    function doGet(e) {
  return HtmlService
    .createHtmlOutputFromFile('mainPage')
    .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Run Code Online (Sandbox Code Playgroud)

和 mainPage.html

<!DOCTYPE html>

<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
</head>

<body>
    <!-- Reference: http://getbootstrap.com/javascript/#tabs -->
    <div role="tabpanel">
        <!-- Nav tabs -->
        <ul class="nav nav-tabs" role="tablist">
            <li role="presentation" class="active"><a role="tab" data-toggle="tab" aria-controls="home" href="#home">Home</a>
            </li>
            <li role="presentation"><a role="tab" data-toggle="tab" aria-controls="profile" href="#profile">Profile</a>
            </li>
            <li role="presentation"><a role="tab" data-toggle="tab" aria-controls="messages" href="#messages">Messages</a>
            </li>
            <li role="presentation"><a role="tab" data-toggle="tab" aria-controls="settings" href="#settings">Settings</a>
            </li>
        </ul>
        <!-- Tab panes -->
        <div class="tab-content">
            <div role="tabpanel" …
Run Code Online (Sandbox Code Playgroud)

web-applications google-apps-script google-workspace

11
推荐指数
2
解决办法
5976
查看次数

服务器功能为某个电子表格返回给 Apps Script webapp 的空值

我正在尝试将电子表格中的数据返回到作为 webApp 发布的 Apps 脚本。但是,对于我的其中一个电子表格(链接),返回的数据是null. 我在返回之前记录了数据以确保它不为空,并且我可以在日志中看到它们。

这是我的代码:

function doGet(){
  return HtmlService.createHtmlOutputFromFile('index');
}

function spreadsheetTest() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var maxRows = sheet.getMaxRows();
  var data = sheet.getSheetValues(1, 1, maxRows, 10);
  Logger.log(data)
  return data;
}
Run Code Online (Sandbox Code Playgroud)
<html>
<button type="button" onclick="clcked();">Click Me!</button>
<div id="Message"></div>

<script>
  function clcked(){
    google.script.run
      .withSuccessHandler(function(response) {
        console.log(response);
      })
      .spreadsheetTest();
  }
</script>
</html>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。:)

html null web-applications google-apps-script

7
推荐指数
1
解决办法
1879
查看次数

如何从 Google Apps Script Web App 返回图像?

我正在尝试使用 Google Apps 脚本制作一个 Web 应用程序,该应用程序实际上返回一个图像文件而不仅仅是文本。我试过就这么简单:

function doGet() {
    var file = DriveApp.getFileById('[redacted]');
    return file;
}
Run Code Online (Sandbox Code Playgroud)

将其发布为 Web 应用程序并执行时,它只是说

脚本完成但没有返回任何内容。

我知道该文件存在并且可以访问,因为我可以打印它的 MIME 类型,这是一个正确的image/png. 所以我在这里遗漏了一些明显的东西,但并不是特别精通 Google Apps 脚本,更不用说任何类型的网络开发了,我不知道我遗漏了什么,正在寻找有关返回图像的介绍性材料来自 Google Apps Script 也不是特别有成效,尤其是当我完全不确定从哪里开始时。

甚至可以通过 Google Apps 脚本从网络应用程序返回图像文件吗?

web-applications google-apps-script

6
推荐指数
1
解决办法
2657
查看次数

移动设备放大 Google Apps 脚本

我在 GAS 中制作了一个 400 像素宽的网络应用程序。我希望在加载时缩放以填充移动设备的屏幕,而不是仅填充屏幕的一半(尽管仍然使用固定的像素宽度)。

我试过使用下面的视口代码但没有运气。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" />
Run Code Online (Sandbox Code Playgroud)

html mobile web-applications google-apps-script

5
推荐指数
2
解决办法
3793
查看次数

如何将 Google Cloud Platform 链接到 Google Sheet 脚本

如何使用 API-Key 或 OAuth2 将 Google Sheet 代码链接到我的付费 Cloud Platform 帐户。我有一个简单的应用程序脚本链接到一个简单的工作表,只要我在“免费”模式下使用它,它就可以完美地工作。但我无法让我的 Google Cloud Platform 帐户 API 与我的工作表一起使用。谁能帮我解决这个问题或告诉我我做错了什么?

工作表的作用:从连续的前三列中获取“发件人地址”、“收件人地址”和日期时间。然后我maps.newDirectionFinder()使用这三个输入参数进行调用。distance.value然后,我使用、duration.value和更新同一行中的其他三列duration_in_traffic.value

下面是我的代码。使用 " 时Maps.setAuthentication(<client-id>, <secret-key>)",我在调用的行中收到“不允许操作”错误Maps.newDirectionFinder()

注意:我启用的 API 包括:“Directions API”、“Google Sheets API”、“Distance Matrix API”、“Maps Javascript API”和“Roads API”。

代码(删除键):

/********************************************************************************
 * Library of Direction Finding and Route Optimization routines from Google Maps
 * Documentation of the Google Maps directionFinder functionality is here: 
 *       https://developers.google.com/apps-script/reference/maps/direction-finder
********************************************************************************/

// To do: 
// API Key (11/04/2018): <API-key> …
Run Code Online (Sandbox Code Playgroud)

google-maps google-sheets google-apps-script google-sheets-api

5
推荐指数
0
解决办法
314
查看次数

如何在 Google 表单问题中添加代码片段

我想为学生做一个关于使用 Google Forms 进行基本编程的测验。挑战是我找不到任何 Add On 如何向问题添加代码片段,就像在 Stack Overflow 中一样,按 Ctrl+K。

google-docs google-apps-script google-forms google-form-quiz

5
推荐指数
1
解决办法
2438
查看次数

有没有办法使用 API 从谷歌驱动器上的多个文件创建一个 zip 文件?

如果您下载目录,Google Drive 网络界面允许您下载单个 .zip 文件。但是,我发现无法使用 API 做到这一点。是否可以使用 API 在驱动器上创建多文件 zip?

更新:Tanakie 的代码有效!这很棒!但是,我只能在我的个人帐户中使用它。我有两个 G-Suite 管理员帐户,但出现错误:

“抱歉,目前无法打开文件。

请检查地址,然后再试一次。”

我已经确认这在多个免费的个人谷歌帐户中工作正常。知道为什么它在使用付费谷歌帐户时不起作用吗?

- - - - 更新 - - -

如果您收到“抱歉,此时无法打开文件”错误,请等待一天,该错误会自行修复。

这是我仅使用 POST 的最终解决方案。就像下面 Tanaike 所说的那样。

谷歌脚本:

function doPost(e) {
  var zipFileName = e.parameter.zipFileName
  var fileIds = e.parameter.ids.split(",");
  return ContentService.createTextOutput(zipping(fileIds, zipFileName));
}

function zipping(fileIds, zipfilename) {
  var blobs = [];
  var mimeInf = [];
  var accesstoken = ScriptApp.getOAuthToken();
  fileIds.forEach(function(fileID) {
      try {
          var file = DriveApp.getFileById(fileID);
          var mime = file.getMimeType();
          var name = file.getName();
      } …
Run Code Online (Sandbox Code Playgroud)

web-applications drive google-apps-script google-drive-api

4
推荐指数
1
解决办法
5248
查看次数

如何使用 php 做简单的 google script api

我想弄清楚如何通过 php 的 api 调用 google 脚本。这是我的脚本:

function doGet() {
  return ContentService.createTextOutput("hello world!");
}
Run Code Online (Sandbox Code Playgroud)

我可以通过 URL 将其作为 Web 应用程序调用,但我想要完成的任务需要通过 API 调用它。谷歌的文档非常混乱,几乎毫无用处。

这似乎是一项非常简单的任务,但我却一事无成。有谁知道在哪里可以找到简单的分步教程,或者有人可以详细说明完成此任务所需的步骤吗?

更新:所以,我已经放弃了 google API 来访问脚本。我可以使用所有驱动器 api 调用,但似乎无法通过 API 调用我自己的脚本。这是我的最终目标:

用于压缩文件的谷歌脚本:

function doGet(e) {
  var fileIds = [];
// hard code a couple of file id's just for simplicity now.
  fileIds.push('0BzoYw0RgVVOvU0RqdTFrcGdSSzA');
  fileIds.push('0BzoYw0RgVVOvNEJNcWpmSkNxNTA');  
  return ContentService.createTextOutput(zipping(fileIds));
}

function zipping(fileIds) {
  var zipfilename = "sample2.zip";
  var blobs = [];
  var mimeInf = [];
  var accesstoken = ScriptApp.getOAuthToken();
  fileIds.forEach(function(e) {
      try {
          var file …
Run Code Online (Sandbox Code Playgroud)

php web-applications google-api google-apps-script google-cloud-platform

2
推荐指数
1
解决办法
3338
查看次数

跳转到GAS html中的元素

我使用 Google Apps 脚本创建了一个简单的 Html 文件,并将其部署为网络应用程序。虽然我在同一页面上添加了一些元素的链接,但它并没有跳转到指定的元素并返回空白页面。

这是 html 的一个片段。

<ul>
<li><a href ="#april">April</a></li>
<li><a href ="#may">May</a></li>
<li><a href ="#june">June</a></li>
</ul>
        .
        .
        .    
<a id="april">2019/04</a>
        .
        .
        .
<a id="may">2019/05</a>
        .
        .
        .
<a id="june">2019/06</a>
        .
        .
        .
Run Code Online (Sandbox Code Playgroud)

当我单击这些元素时,它会重定向到另一个 URL,如下所示。

https://{scriptid}-script.googleusercontent.com/userCodeAppPanel#id

我尝试访问 {url}+{#id},它给了我相同的页面。所以 id 属性似乎不起作用,但我不知道要修复什么。我在这里做错了什么?

编辑 这是我到目前为止所尝试过的。 https://script.google.com/macros/s/AKfycbyW5FRfQP3CpOU0brJEeeSgR6xypQ57jAjDs5KfQFYRmYIaaBs/exec

.gs 文件

function doGet() {
   return HtmlService.createTemplateFromFile('index').evaluate();
}
Run Code Online (Sandbox Code Playgroud)

html文件

<!DOCTYPE html>
<html>
<head>
<base target="_top">
    1
    <br>
    2
    <br>
    3
    <br>
    4
    <br>
    5
    <br>
    <a name="top">Top</a>
</head>  
<body>
<br><br><br><br><br>
    <a href="#top">Goto …
Run Code Online (Sandbox Code Playgroud)

html anchor web-applications google-apps-script

2
推荐指数
1
解决办法
559
查看次数

将 showModalDialog() 的内容添加到剪贴板 Google 脚本

当我单击按钮时,我已将格式化数据添加到模态对话框中

showModalDialog()我希望当我单击按钮时将的内容自动添加到剪贴板

模态是使用下面的代码生成的,并且temp是我想要添加到剪贴板的输出

//Output to Html
 var htmlOutput = HtmlService
              .createHtmlOutput(temp)
              .setSandboxMode(HtmlService.SandboxMode.IFRAME)
              .setWidth(600)
              .setHeight(500);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Filter OptionList Maker');
Run Code Online (Sandbox Code Playgroud)

编辑; 好吧,我想也许这可能Modal Dialog是题外话,正确的问题可能是如何将格式化的字符串添加temp到剪贴板

这是我所说的格式化字符串的示例

filter {
  target: element;
  as: dropdown;
  padding: 5;
  summary: "Network Practice";
  default: show-all;
  multiple: true;

  option {
   label: "< 1 year";
   selector: element["NETWORK PRACTICE"="< 1 year"];
  }
  option {
   label: "1-3 years";
   selector: element["NETWORK PRACTICE"="1-3 years"];
  }
  option {
   label: "3-10 years";
   selector: element["NETWORK PRACTICE"="3-10 years"];
  }
  option {
   label: "> …
Run Code Online (Sandbox Code Playgroud)

javascript clipboard web-applications modal-dialog google-apps-script

2
推荐指数
1
解决办法
1540
查看次数

如何通过 Google Apps Script Web App 将 jpg 或 png 图像转换为 Blob?

我想将 html 表单中的图像通过 http 发布到谷歌应用程序脚本网络应用程序,然后将该图像添加到谷歌驱动器。

我的应用程序脚本如下。

function doPost(e){
  var date = new Date();
  var timestamp = date.toString()
  var adress = e.parameter.adress;
  var cost = e.parameter.cost;
  var item = e.parameter.item;
  var check = e.parameter.image;

  //add file to drive
  var destination_id = "some ID"
  var destination = DriveApp.getFolderById(destination_id);
  destination.createFile(check);
};
Run Code Online (Sandbox Code Playgroud)

当我执行时,它返回一个错误; cannot find method: createFile(String)

我认为这是因为“检查”是一个字符串,我想将提交的图像转换为Blob。

我怎样才能做到这一点?

blob web-applications google-apps-script

1
推荐指数
1
解决办法
4015
查看次数