如何在Apps脚本中使用员工数据制作环聊机器人?

时间:2018-03-07 15:02:49

标签: google-apps-script hangouts-chat

我已经通过AppsScript构建了我的第一个聊天机器人,它很棒。

我坚持使用的用例是“获取有关同事的信息”。

以下代码可以使用,但联系人没有任何电话号码。好吧,不是在本地用户“联系人”,而是在公司目录中。对于用户来说,有一些很大的API,我不知道是否可以在另一个用户调用该函数时获得授权。

var contacts = ContactsApp.getContactsByName("Firstname Lastname");
var phoneFields = contacts[0].getPhones();

var widgets = [{
   "buttons": [{
     "imageButton": {
                "icon": "EMAIL",
                "onClick": {
                  "openLink": {
                    "url": "mailto:"+ contacts[0].getPrimaryEmail()+""
                  }
              }
            }
            },{
     "imageButton": {
                "icon": "PHONE",
                "onClick": {
                  "openLink": {
                    "url": "tel:" + phoneFields[0].getPhoneNumber() +""
                  }
              }
            }
            }
            ]

提前致谢

1 个答案:

答案 0 :(得分:2)

我显然忘了今天早上按“发布”,6小时后我就解决了。 我在管理员控制下创建一个单独的电子表格来获取目录数据。 设置该电子表格,以便域中的每个人都可以访问它。

  if((event.message.text.toLowerCase().indexOf("firstname1") !== -1) || (event.message.text.toLowerCase().indexOf("firstname2") !== -1)){ 
// Get the sheet
var sheet = SpreadsheetApp.openById("secret-key-from-sheet");
var data = sheet.getActiveSheet().getDataRange().getValues();
var personFound = false;
var i = 0;
// Search for person in document
while (personFound == false) {
  if (event.message.text.toLowerCase().indexOf(data[i][0].toLowerCase()) !== -1){
    personFound = true
  } else {
    i++;
  }
}

/* List all data you can get
    data[i][0]); //First name
    data[i][1]); //Last name
    data[i][2]); //E-mail
    data[i][8]); //Work Phone
    data[i][29]); //Custom field
    data[i][30]); //Custom field (image)
    data[i][31]); //Custom field
*/
//Card
var header = {
  "header": {
    "title" : data[i][0] +" " +data[i][1],
    "subtitle" : data[i][31],
    "imageUrl" : data[i][30]
  }
}

var widgets = [{
   "buttons": [{
     "imageButton": {
                "icon": "EMAIL",
                "onClick": {
                  "openLink": {
                    "url": "mailto:" + data[i][2]
                  }
              }
            }
            },{
     "imageButton": {
                "icon": "PHONE",
                "onClick": {
                  "openLink": {
                    "url": "tel:" + data[i][8]
                  }
              }
            }
            }
            ]
},{
   "keyValue": {
     "topLabel": "Custom header for custom data",
     "content": data[i][29]
   }
 }
              ];

return createCardResponsewithHeader(header, widgets); //this is from Googles example, but I'm passing a custom header instead of using a "Bot"-header.
}