質問編集履歴

1 誤字の修正

snowman

snowman score 22

2018/07/13 17:14  投稿

custom search APIとdaabの組み合わせ
daabを使いseとダイレクトに送信すると検索結果が返ってくるようにしようとしています。
一応、他のAPIをしようした時のを参考に色々と書き換えてみたのですがうまくいきません。
daabを使いseとdirectに送信すると検索結果が返ってくるようにしようとしています。
一応、他のAPIを使用した時のを参考に色々と書き換えてみたのですがうまくいきません。
アドバイスをいただけないでしょうか?
```node.js
'use strict';
const fs = require('fs');
const readline = require('readline');
const {google} = require('googleapis');
const SCOPES = ['https://www.googleapis.com/auth/CustomSearch.readonly'];
const TOKEN_PATH = 'credentials.json';
module.exports = (robot) => {
 robot.respond(/SE$/i, (res) => {
   // Load client secrets from a local file.
   try {
     const content = fs.readFileSync('client_secret.json');
     authorize(JSON.parse(content), (auth) => {
       const search = google.customsearch('v1');
       process.on('unhandledRejection', console.dir);
       const res = search.cse.list({
          q: ,//検索ワード
          apiKey: ,//APIキー
          cx: //custom searchのやつ
       }, (err, {date}) => {
         if (err) return console.log('The API returned an error: ' + err);
         const events = data.items;
         var result = "";
         events.map((event, i) => {
         const start = event.start.dateTime || event.start.date;
           result = result + `${start} - ${event.summary}\n`;
         });
         res.send(result);
       });
     });
   } catch (err) {
     return console.log('Error loading client secret file:', err);
   }
 });
};
/**
* Create an OAuth2 client with the given credentials, and then execute the
* given callback function.
* @param {Object} credentials The authorization client credentials.
* @param {function} callback The callback to call with the
“authorized client.
* @return {function} if error in reading credentials.json asks for a new one.
*/
function authorize(credentials, callback) {
 const {client_secret, client_id, redirect_uris} = credentials.installed;
 let token = {};
 const oAuth2Client = new google.auth.OAuth2(
     client_id, client_secret, redirect_uris[0]);
 // Check if we have previously stored a token.
 try {
   token = fs.readFileSync(TOKEN_PATH);
 } catch (err) {
   return getAccessToken(oAuth2Client, callback);
 }
 oAuth2Client.setCredentials(JSON.parse(token));
 callback(oAuth2Client);
}
/**
* Get and store new token after prompting for user authorization, and then
* execute the given callback with the authorized OAuth2 client.
* @param {google.auth.OAuth2} oAuth2Client The OAuth2 client to get token for.
* @param {getEventsCallback} callback The callback for the authorized client.
*/
function getAccessToken(oAuth2Client, callback) {
 const authUrl = oAuth2Client.generateAuthUrl({
   access_type: 'offline',
   scope: SCOPES,
 });
 console.log('Authorize this app by visiting this url:', authUrl);
 const rl = readline.createInterface({
   input: process.stdin,
   output: process.stdout,
 });
 rl.question('Enter the code from that page here: ', (code) => {
   rl.close();
   oAuth2Client.getToken(code, (err, token) => {
     if (err) return callback(err);
     oAuth2Client.setCredentials(token);
     // Store the token to disk for later program executions
     try {
       fs.writeFileSync(TOKEN_PATH, JSON.stringify(token));
       console.log('Token stored to', TOKEN_PATH);
     } catch (err) {
       console.error(err);
     }
     callback(oAuth2Client);
   });
 });
```
以下エラー文になります。
TypeError: Cannot destructure 'undefined' or 'null'.
 at search.cse.list (/Users/ne280042/Desktop/プログラミング/node/searchchat/mybot/scripts/ping.js:23:12)
 at /Users/ne280042/Desktop/プログラミング/node/searchchat/mybot/node_modules/google-auth-library/build/src/transporters.js:77:17
 at <anonymous>:null:null
 at process._tickCallback (internal/process/next_tick.js:188:7)
error: restarting script because change changed
error: Forever detected script was killed by signal: SIGKILL
error: Script restart attempt #4
  • Google API

    745 questions

    Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

  • Node.js

    2544 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る