Google apps script 松弛>;Gsheet>;VLookup>;松弛的

Google apps script 松弛>;Gsheet>;VLookup>;松弛的,google-apps-script,webhooks,slack,slack-api,Google Apps Script,Webhooks,Slack,Slack Api,在过去的几周里,我一直在努力解决这个问题,所以我真的希望有人能帮我解决这个问题。而且我对代码非常陌生,这基本上激发了我对它的兴趣 我要做的是为谷歌工作表编写一个谷歌应用程序脚本,并将其链接到一个入站和出站Slack webhook,这样我就可以在Slack中发布一个命令,比如PO#,它将填充一个电子表格,该电子表格中有内置了数组公式的vlookup列,然后我想把从Vlookup中提取的数据发布回Slack。我最初有这个想法 我已经非常接近了,但是我不知道如何让脚本将Vlookup数据发布到Sla

在过去的几周里,我一直在努力解决这个问题,所以我真的希望有人能帮我解决这个问题。而且我对代码非常陌生,这基本上激发了我对它的兴趣

我要做的是为谷歌工作表编写一个谷歌应用程序脚本,并将其链接到一个入站和出站Slack webhook,这样我就可以在Slack中发布一个命令,比如PO#,它将填充一个电子表格,该电子表格中有内置了数组公式的
vlookup
列,然后我想把从
Vlookup
中提取的数据发布回Slack。我最初有这个想法

我已经非常接近了,但是我不知道如何让脚本将
Vlookup
数据发布到Slack中。这是一张照片,突出显示的单元格是
vlookup
列:

下面是我正在编写的谷歌应用程序脚本代码:

功能doPost(req){
var sheets=SpreadsheetApp.openById('googlesheet_link');
var params=请求参数;
var nR=getNextRow(表)+1;
if(params.token==“slack\u webhook”){
//已经在床单上了
var供应商
//处理消息中的文本
var textRaw=String(params.text).replace(/^\s*update\s*:*\s*/gi');
var text=textRaw.split(/\s*;\s*/g);
//如果未提供更新,则返回默认文本
var project=text[0]| |“未指定项目”;
var purchaseorder=text[1]| |“未提供更新”;
var today=文本[2]| |“未提供更新”;
var blockers=text[3]| |“未提供更新”;
//在电子表格中记录时间戳和用户名
sheets.getRangeByName('timestamp').getCell(nR,1).setValue(new Date());
sheets.getRangeByName('user').getCell(nR,1).setValue(params.user_name);
//将更新信息记录到电子表格中
表格.getRangeByName('project').getCell(编号1).setValue(项目);
sheets.getRangeByName('purchaseorder').getCell(nR,1).setValue(purchaseorder);
sheets.getRangeByName('today').getCell(nR,1)、setValue(today);
表.getRangeByName('blockers').getCell(nR,1).setValue(blockers);
var channel=“更新”;
postResponse(频道、参数频道名称、项目、参数用户名、采购订单、今日、阻止者、供应商);
}否则{
返回;
}
}
函数getNextRow(表){
var timestamps=sheets.getRangeByName(“timestamp”).getValues();
for(时间戳中的i){
如果(时间戳[i][0]=“”){
返回编号(i);
打破
}
}
//这就是回报//
功能postResponse(渠道、srcChannel、项目、用户名、采购订单、今日、拦截器、供应商){
var有效载荷={
“频道”:“#”+频道,
“用户名”:“Trackbot3000”,
“icon_表情符号”:“robot_face:”,
“链接名称”:1,
“附件”:[
{
“回退”:“这是集成到您的组织中的Slackbot的更新。您的客户端选择不显示附件。”,
“借口”:“*”+project+”*发布了一个站立更新。(由@“+userName+”在“+srcChannel+”)中发布),
“mrkdwn_in”:[“借口”],
“颜色”:“D00000”,
“字段”:[
{
“标题”:“昨天”,
“价值”:采购订单,
“短”:假
},
{
“标题”:“今天”,
“价值”:今天,
“短”:假
},
{
“标题”:“拦截器”,
“价值”:阻滞剂,
“短”:假
},
{
“标题”:“供应商”,
“价值”:供应商,
“短”:假
}
]
}
]
};
var url='slack_webhook_link';
变量选项={
'method':'post',
“有效负载”:JSON.stringify(有效负载)
};
var response=UrlFetchApp.fetch(url,选项);
}

我半解决了这个问题。我最终只使用Google脚本应用程序代码的第一部分将slack中的数据填充到Google工作表中,并去掉了//部分,然后这是返回//部分。然后,我在Google工作表中的Vlookup列中使用了IF和ArrayFormula。然后,我使用automation.io来发送新行触发器它又回到了松弛状态。以防万一其他人想这样做。

欢迎。堆栈片段应该只用于此站点上可执行的HTML/CSS/JavaScript。您遇到了什么问题?有错误吗?这里没有任何代码试图从工作表上的任何位置获取任何值-只是一些设置值的代码。@tehhowch我没有收到任何错误,我想我只是缺少了一些拉vlookup列的代码。基本上现在它变为Slack>Gsheet>Slack,只有我第一次输入Slack的信息。我需要它变为Slack>Gsheet>pull vlookup column>Slack。如果有帮助的话,我可以发布一个谷歌工作表示例?不,不会't.您的代码已经显示了您知道如何获取特定工作表和特定范围。您只需添加执行该操作的代码,即可读取vlookup结果的范围(并且您需要
刷新
缓冲区,以便在对该范围调用
getValue/s
之前计算公式).@tehhowch在函数PostResponse之前,它会是这样的:spreadhheetap.flush();吗?