使用 App 脚本从电子表格推送数据

Posted

技术标签:

【中文标题】使用 App 脚本从电子表格推送数据【英文标题】:Pushing Data From Spreadsheets Using App Scripts 【发布时间】:2021-10-29 16:33:24 【问题描述】:

所以我正在尝试在 Google App Scripts 上编写一个脚本,该脚本执行以下操作: 在具有多列和多行的电子表格上,每当有人选中某行上的复选框时,将存在于同一行但在不同列上的数据推送到 Slack 消息中。

**例如,假设我的电子表格中的 A1 是“XX02”,而 Q1 是一个复选框。如果有人来检查 Q1,我想发送一条自动消息说“XX02 完成”。 **

这是我目前得到的:

var url = "slack url"

function onEdit(e)

var column = e.getColumn;
var row = e.getRow
var newValue = e.value; 
var oldValue = e.oldValue; 

var payload = 
      'text' : CELLVALUE + " changed from " + oldValue + " to " + newValue  + ":white_check_mark:"
    ;
var params = 
      'method' : 'post',
      'contentType' : 'application/json',
      'payload' : JSON.stringify(payload)
    ;
  
  return UrlFetchApp.fetch(url, params)


当然,“CELLVALUE”是一个占位符,因为我不知道如何获得该值。因为无论我选中哪个框,我都需要它工作。

到目前为止,我在 Slack 上使用此代码得到的消息是“未定义从未定义更改为 TRUE”。

提前感谢任何可以给我提示的人。

【问题讨论】:

您正在更改复选框的值。但是您想在另一个不变的列中获取值。您的 Slack 消息令人困惑。你想做什么? 嗯,同一行中的所有列都有关于同一个项目的信息(这是一个项目管理电子表格),列 Q1 是一个复选框,A1 包括项目编号,Q2-A2 也是如此,Q3-A3等。基本上,选中 Q 列中的框表示该行中的项目已准备好交付。 【参考方案1】:

假设目标列在复选框的旁边:

var range = e.range;
var cell = range.offset(0, -1);
var CELLVALUE = cell.getValue();

参考: offset(rowOffset, columnOffset)

【讨论】:

哦,非常感谢!这就像一个魅力,左边有 16 列,所以我只是调整了这个值,就是这样!很抱歉我的问题不清楚,我对编程很陌生,对 App Scripts 也很陌生。再次感谢!

以上是关于使用 App 脚本从电子表格推送数据的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本 - 将一行数据从一个电子表格移动到另一个电子表格

如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串

在 Google App 脚本、电子表格中添加前导零

谷歌脚本从电子表格中获取 json 数据

使用谷歌应用脚​​本从电子表格数据中检索行

用于将数据从谷歌电子表格加载到 bigquery 的独立脚本