标签: google-apps-script

按列名而不是列索引获取列值

我是Google Apps脚本的新手.我想通过它的列名来获取特定单元格的值,而不是列索引.这是我有的:

var rows = sheet.getDataRange();
var values = rows.getValues();
var row =values[1];
var rowStaffName = row[0];
Run Code Online (Sandbox Code Playgroud)

而不是使用row[0],我想使用列名称.有一个简单的方法吗?

google-sheets google-apps-script

17
推荐指数
3
解决办法
2万
查看次数

很抱歉,从存储读取时发生服务器错误。错误代码 PERMISSION_DENIED

我编写了一个 google 脚本编辑器插件,并将其发布到 google 市场,并具有私人可见性(它仅对我组织中的用户可见)。我在脚本编辑器中测试了具有所有类型权限(为当前用户安装、在当前文档中启用、已安装和启用)的插件,一切都按预期工作。但是,在将插件发布到市场并将其安装在测试电子表格中后,我不断收到此错误:We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.来自onOpen函数。

我正在明确设置这些 oauth 范围:

"oauthScopes": [
    "https://www.googleapis.com/auth/script.container.ui",
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/script.scriptapp",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/userinfo.profile"
  ]
Run Code Online (Sandbox Code Playgroud)

这是我的onOpen触发器:

function onOpen(e: AppsScriptEvent) {
    if (e && e.authMode !== ScriptApp.AuthMode.NONE) {
        const ui = SpreadsheetApp.getUi();
        const menu = ui.createAddonMenu();
        menu.addItem("Add New Offering", "addNewOffering");
        menu.addSeparator();
        menu.addSubMenu(
            ui
                .createMenu("Settings")
                .addItem("Dashboard Name", "changeDashboardName")
                .addItem("Dashboard Start Cell", "changeDashboardStartCell")
        );
        menu.addToUi();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里还缺少什么其他类型的许可?

triggers google-sheets google-apps-script google-apps-script-addon

17
推荐指数
2
解决办法
4623
查看次数

加载 jQuery 等外部脚本时出现问题

从今天早上开始,我就遇到了一个问题,使用 Apps 脚本部署的 web 应用程序以前运行良好。当然,没有做出任何改变来证明这个问题的合理性。

外部脚本不会从 HTML 端加载,并且控制台中会出现新错误。

为了有一个可重现的例子:

代码.gs

function doGet() {

  var template = HtmlService.createTemplateFromFile('index');

  return template.evaluate()
                .setTitle('TEST')
                .addMetaTag('viewport', 'width=device-width, initial-scale=1')
                .setSandboxMode(HtmlService.SandboxMode.IFRAME)
}
Run Code Online (Sandbox Code Playgroud)

索引.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  </head>
  <body>
        <div id="title">Hello</div>
  </body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

  <script>
    window.onload = function() {

      console.log('loaded');
      console.log($('#title').html());

    }
  </script>
</html>
Run Code Online (Sandbox Code Playgroud)

控制台中的结果:

[ERROR] This document requires 'TrustedHTML' assignment. (jquery.min.js:2)

[ERROR] Uncaught TypeError: Failed to set the 'innerHTML' property on 'Element': This document requires 'TrustedHTML' assignment. (jquery.min.js:2)

[LOG] loaded …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery google-apps-script google-workspace

17
推荐指数
2
解决办法
2443
查看次数

比较两个日期Google应用脚本

比较两个日期的最佳方法是什么?

var int = e.parameter.intlistbox;
var startDate = rSheet.getRange(parseInt(int) + 1 ,1).getValues();
// returns Sat Jun 30 2012 00:00:00 GMT-0300 (BRT) 
var toDay = new Date();
// Sat Jun 23 2012 22:24:56 GMT-0300 (BRT)

if (startDate > toDay){ ....
Run Code Online (Sandbox Code Playgroud)

我看到.toString()选项,但似乎只适用于==或===运算符.

这个问题有什么明确的吗?

datetime date date-manipulation google-apps-script

16
推荐指数
5
解决办法
6万
查看次数

我可以使用Google Apps脚本为Google文档中的某些字词添加颜色吗?

我正在尝试突出显示我的Google文档中的某些字词.我知道我可以使用document.replace替换文本,但它只替换字符串本身,而不是格式化.有没有办法用Google Apps脚本用彩色字符串替换字符串?

google-docs google-apps-script

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

以编程方式在电子表格中设置边框颜色和样式

Google Spreadsheet在工具栏下方的边框按钮上还有一个按钮,用于更改颜色和更改边框样式.

如何在Google Apps脚本中访问这些内容?

setBorderColor对文档描述的功能似乎不适用于电子表格.

border colors google-sheets google-apps-script

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

Google Apps脚本:很抱歉,发生了服务器错误.请稍等一下再试一次

我收到了341封错误通知电子邮件,内容如下

很抱歉,发生了服务器错误.请稍等一下再试一次.

通知电子邮件仅说明发生问题的功能名称.

该脚本现在没有运行.任何尝试在脚本中运行任何函数都会产生上述错误.我使用脚本添加到电子表格中的自定义菜单也消失了.我发现没有办法调试脚本,因为脚本上的每个操作都给我上述错误.

编辑

以下是错误发生的功能

function crunchEmails() {
  var sheet   = SpreadsheetApp.getActiveSheet();
  var gLabel  = sheet.getRange("gmailLabel").getValues();


  // check the current SpreadSheet for limits and create a 
  // new SpreadSheet if limits are approaching
  checkSpreadSheet();


  var gFolder = sheet.getRange("outputFolderName").getValues();
  var gSpreadSheetName = sheet.getRange("outputSpreadsheetPrefix").getValues();
  var threadsPerSearch  = sheet.getRange("threadsPerSearch").getValues(); 

  // Number of emails per search:
  var threads = GmailApp.search("-label:" + gLabel, 0, threadsPerSearch); 

  for (var x=0; x<threads.length; x++) {

    var messages = threads[x].getMessages();

    // getting null...a thread without messages is weird
    if(messages …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

16
推荐指数
2
解决办法
2万
查看次数

在谷歌应用脚​​本中解析html的最佳方法是什么?

var page = UrlFetchApp.fetch(contestURL);
var doc = XmlService.parse(page);
Run Code Online (Sandbox Code Playgroud)

上面的代码在使用时给出了解析错误,但是如果我将XmlService类替换为已弃用的Xml类,并且设置了lenient标志,则它会正确解析html.

var page = UrlFetchApp.fetch(contestURL);
var doc = Xml.parse(page, true);
Run Code Online (Sandbox Code Playgroud)

问题主要是因为html的javascript部分没有CDATA而且解析器抱怨以下错误.

The entity name must immediately follow the '&' in the entity reference.
Run Code Online (Sandbox Code Playgroud)

即使我删除所有<script>(.*?)</script>使用正则表达式,它仍然抱怨因为<br>标签没有关闭.是否有一种将html解析为DOM树的简洁方法.

html javascript regex google-apps-script

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

将按钮添加到Google表格并在单击时将值设置为单元格

我是Google Script的新手.

我有一个包含5列的Google表格,每列我都需要一个按钮(带文字1,2,3,4,5).

在每个按钮上单击我需要将按钮的文本设置为相应的单元格并隐藏单击的按钮.

可能吗?

google-sheets google-apps-script

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

未找到Google云端硬盘页面 - 抱歉,目前无法打开该文件

我正在使用谷歌脚本来部署Web应用程序.我在同一个帐户中做了大约5-10.当我尝试运行网络应用程序/脚本时,我现在得到:标题和消息中的" Google Drive:找不到页面 "

抱歉,目前无法打开该文件.请检查地址并再试一次.

我发布它作为所有者运行,但可以访问" 任何人,甚至匿名 ".

然后,我尝试使用doGet()返回小型静态网页的方法创建一个新的小项目,结果相同.

Code.gs:

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('Test');
}
Run Code Online (Sandbox Code Playgroud)

的test.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    This is a test
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我尝试在我的个人帐户中发布上面的相同电子表格/代码,它运行正常.由于我已经部署了一些带有错误的帐户的网络应用程序,每个帐户的网络应用程序数量是否有配额?

我尝试了不同的浏览器,不同的帐户,重新发布,并注销并重新登录.相同的错误消息." 使用最新代码测试您的Web应用程序 "链接也会失败.我可以doGet()在IDE中直接调用该方法,它工作正常,我在日志中看到输出.

我没有在日志中看到任何页面未找到错误的错误,这是我对未找到页面的期望 - 甚至没有进行代码执行,因此没有日志.

publish google-apps-script

16
推荐指数
3
解决办法
2万
查看次数