带有 Google App 脚本的 Google Sheets:如何在返回最终结果之前向单元格写入“状态”消息?

2024-05-01

我有一个函数可能需要一段时间才能返回输出。有没有办法让它在单元格中打印一条消息,然后稍后用输出覆盖该消息?该函数可能需要 30 秒才能运行,并且可能在 20-30 个单元格中使用,因此很高兴看到哪个单元格仍在计算以及哪个单元格已完成。

function do_calc() {
  print("Now doing the calculations...")
    
  // ... (bunch of code here that does the calculations)
    
  return output;
}

我尝试使用setvalue()但它说我无权在自定义函数中执行此操作:

这是我的代码:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var active_range = sheet.getActiveRange();
  sheet.getRange(active_range.getRowIndex(), 10).setValue('Running...');
  Utilities.sleep(10000);
  return 'Finished';
}

Issues:

就像我在评论中说的,你不能return两次,因为第一次return语句将取消后面的代码。

  • 还设置方法(如setValue) 不允许出现在自定义函数中,如官方文档 https://developers.google.com/apps-script/guides/sheets/functions.

解决方案:

解决方案是合并内置的谷歌表格公式IFERROR https://support.google.com/docs/answer/3093304?hl=en.

=iferror(myFunction(),"Running...")

where myFunction is:

function myFunction() {
  try{
    // some code that delays
    Utilities.sleep(10000);
  }
  catch(e){
    return e.message;
  } 
  return 'Finished';
}

我添加了一个试着抓 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch以确保你return与脚本相关的错误消息。否则,iferror会隐藏它们。

当心!

自定义函数调用必须在以下时间内返回30秒。如果超过这个时间,那么自定义函数将返回错误:

超过最大执行时间

由于您已经使用过,因此不会显示iferror这将覆盖错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 Google App 脚本的 Google Sheets:如何在返回最终结果之前向单元格写入“状态”消息? 的相关文章

  • Google Sheets 自定义数字格式、颜色规范

    我有一个自定义的百分比数字格式 这是代码 Green 0 0 Red 0 0 输出预览 Positive 123 456 0 Green Negative 123 456 0 Red 我想要绿色更深一些 我已经尝试过了 Dark Green
  • 尝试获取 Google accessToken

    看起来 无论我做什么 谷歌都在竭尽全力阻止我完成这个研究项目 我的项目让我使用 Google 电子表格作为数据库 并使用所述电子表格中的数据执行程序化的 Google 图片搜索 并向最终用户显示一些结果 设置说明 我开始按照此处的说明进行操
  • 自动递增 ID 号 Google Apps 脚本

    我想在向工作表添加新值时自动增加 ID 我尝试从当前的 ID 列表创建一个列表 但它只计数到 5 因此当自动递增时 它只会到达一个点并为每个输入保存该数字 以下是我尝试获取 ID 号列表的方法 但它没有获取整个列表 我缺少什么 var ss
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • ArrayFormula 破坏了 getLastRow() 函数。可能的解决方法?

    在我的电子表格中 我有一个正在运行的脚本 它使用getLastRow 功能是其逻辑的重要组成部分 自从我在其中一列中应用数组公式以来 getLastRow 功能无法正常工作 即使其他列中没有其他值 数组公式似乎也一直 应用 到工作表的底部
  • 我们可以使用 Google Spreadsheet 作为后端数据库吗

    我正在尝试开发一个应用程序 在其中从与某些事务相关的多个客户端获取数据 现在我想使用 Google Spreadsheet 进行一些分析 有什么方法可以使用 ASP Net MVC 使用 C 实现此目的 Google 提供 OAuth 当我
  • 如何在谷歌电子表格中获取台湾证券交易所指数

    如何在谷歌电子表格中获取台湾证券交易所指数 该索引确实存在于谷歌金融中https www google com finance q TPE 3ATAIEX https www google com finance q TPE 3ATAIEX
  • Google 电子表格中带有 len 的 Countif

    我有一个像这样的 XXX 列 XXX A Aruin Avolyn B Batracia Buna 我想仅当单元格中的字符串长度 gt 1 时才对单元格进行计数 怎么做 我想 COUNTIF XXX1 XXX30 LEN gt 1 但我应该
  • Google App Script postMessage 与收件人窗口的来源不匹配

    我有一个 Google App 脚本部署为Web应用程序 https developers google com apps script guides web 它工作正常 直到今天晚上我发现它无法在 Firefox 或 Chrome 中加载
  • Google Sheets - 如何从 iOS 应用程序运行脚本?

    我在电子表格中使用脚本在活动行下方添加行并从活动行复制内容 在 PC 上 我可以通过图像 绘图触发脚本 效果很好 但我不知道如何让它在 iOS 应用程序中工作 其中图像触发不起作用 并且将内容从一个应用程序复制到另一个应用程序是一场噩梦 我
  • 如何隐藏工作表?

    如何使用 googleScript 隐藏电子表格应用程序中的一些工作表 我有一个包含多个工作表的电子表格 我想使用 googlScript 将电子表格缩小为仅第一个可见工作表和所有其他隐藏工作表 sheet hideSheet https
  • window.location.href = window.location.href 返回空白页

    我正在使用 Google App Script 创建一个网页 单击按钮后 我尝试重新加载页面 但以下操作均无效 窗口 位置 href 窗口 位置 href window location reload true 他们正在重定向到空白页面 下
  • 向文档添加动态页眉/页脚

    我想知道是否有一种方法可以向文档添加动态页眉或页脚 即在页脚中添加每个页面都不同的 页面标题 据我所知 编辑内置页眉或页脚将反映在每个页面上 我想知道是否有人想到了一种解决方法 通过访问页面上的第一行 最后一行并在那里插入文本来 强制 它
  • 如何编辑范围? // Google Classroom 控制 Google Apps 脚本中学生访问的权限范围

    我是一名高中老师 正在针对 Google Classroom 编写 Google Apps 脚本 我想创建一个类似于学生成绩视图的电子表格 我的学生可以使用他们的凭据进行访问 我已经成功编写了代码 这样我就可以通过在代码中显式放置学生的 I
  • Google 脚本:如何编写从驱动器中的 txt 自动导入电子表格的脚本?

    我以前从未使用过 Javascript 而且多年来我一直在尝试这样做 但没有成功 而且我找不到任何以前的人尝试过 我想直接从驱动器中的 txt 文档复制文本数据 可以手动完成此操作 但我希望每天自动完成 文本文件 Boxes Made 3
  • XPath 将元素中的所有文本作为一个值获取,删除换行符

    我试图获取以下一组节点中的所有文本并作为一个值返回 而不是多个节点 p I love eating out br br This is my favorite restaurant br I will definitely be back
  • 如果输入重复,则覆盖 Google 表格(用于表单响应)行

    因此 我一直在尝试找出如何阻止谷歌表单中的谷歌表格响应输出中出现重复的行 如果找到这个链接 听起来它正是我想要的 表单 Google 脚本防止重复 https stackoverflow com questions 16965687 for
  • 在 userCodeAppPanel 中看不到我的 javascript 代码

    这是来自 Google 电子表格中包含的脚本的代码 唯一的其他代码是onOpen它创建菜单和showDialog 功能 function showDialog userInterface HtmlService createHtmlOutp
  • 脚本在 SpreadsheetApp.openById 上失败 - 需要权限

    我有一个 onOpen 函数 可以在电子表格中创建自定义菜单 它已经工作了一年多 但几天前它停止工作了 当我查看执行记录时 我得到 执行失败 您无权调用 SpreadsheetApp openById 所需权限 https www goog

随机推荐