実行可能APIをchrome拡張から呼び出したい

440 views
Skip to first unread message

Rusty Alucard

unread,
Feb 7, 2019, 11:07:55 PM2/7/19
to Google Apps API Japan
実現したいことはざっくり以下になります。

・google spreadsheet である情報のリスト管理をしている
・このリストに存在するかしないかをJSON形式で返す実行可能APIを作成したい(※1)


・ある特定のURLのページの、特定の情報をパラメータとして(※1)のAPIをコールして結果を得たい
・Chrome拡張は Chromeストアにアップする予定はないので、デベロッパーモードで取り込もうと考えている


やったことはこちら
・実行可能APIとして導入
・リソース>Cloud Platform プロジェクトから、「Apps Script API」を有効にした
・該当プロジェクトで OAuth 2.0 クライアント ID を Chrome アプリとして 発行
 ・そのときのアプリケーションIDは、Chrome拡張を取り込んだときに確認できるものを利用した

結果は、callは成功するが、Script Errorとなってしまいました。
error: code: 3 
"The script completed but the returned value is not a supported return type."

GASのほうでは、このようなレスポンスを生成しています
var res = {'status': 200, 'message': 'OK'};
return ContentService.createTextOutput().setMimeType(ContentService.MimeType.JSON).setContent(JSON.stringify(res));

 
chrome拡張では、fetch APIを利用して通信をしています

chrome.identity.getAuthToken({interactive: true}, function(token) {

            let init = {

                method: 'POST',

                async: true,

                headers: {

                    Authorization: 'Bearer ' + token,

                    'Content-Type': 'application/json'

                },  

                body: JSON.stringify(params),

                contentType: 'json'

            };  

           

            fetch('https://script.googleapis.com/v1/scripts/{script_id}:run', init)

                .then((response) => response.json())

                .then(function(data) {

                    console.log(data);

                });

        });    


利用の仕方がおかしいなどのヒントを頂ければと思います。
上記の情報で足りない場合は、提供できるものは追記します。

Rusty Alucard

unread,
Feb 8, 2019, 1:50:25 AM2/8/19
to Google Apps API Japan
ああああああ。ごめんなさい。
ContentService使うのは、ウェブサービスとして公開するときですね。。。勘違いしてました。
単純にJSON.stringify(res)を返すようにしたら取得できました。お騒がせしました。



2019年2月8日金曜日 13時07分55秒 UTC+9 Rusty Alucard:
Reply all
Reply to author
Forward
0 new messages