Cordova アプリで Google Apps Script で書いたプログラムを呼出してみた
はじめに
Google Apps Script で書いたプログラムを Cordova アプリから Google アカウント認証して使用しようと思いました。
まず、Cordova アプリで Google API 呼出できるようにしました。
前回の記事 Cordova アプリで Google API 呼出してみた
続いて、Google Apps Script で書いたプログラムを呼出できるようにしたいと思います。
この記事のサンプルを動かせるようにします。
Google Apps Script Execution APIを試してみた。 | 初心者備忘録
Google Apps Script のプログラムを準備する
Google アカウントを作成する。既にあればそれを使用する
(https://www.google.com/accounts)
Apps Script プロジェクトを作成する
(https://script.google.com)
Google Apps Script でプログラムを作成する
作成したプログラムを実行して承認(許可)
しておく
スクリプトエディタ画面で実行可能 API として導入
Developer Console プロジェクト
と関連付け
関連付けられた Developer Console プロジェクトで Google Apps Script Execution API
を有効にしておく
Google Apps Script でプログラムを作成する
Google アカウントを作成する。既にあればそれを使用する
(https://www.google.com/accounts)
Apps Script プロジェクトを作成する
(https://script.google.com)
Google Apps Script でプログラムを作成する
作成したプログラムを実行して承認(許可)
しておく
スクリプトエディタ画面で実行可能 API として導入
Developer Console プロジェクト
と関連付け
関連付けられた Developer Console プロジェクトで Google Apps Script Execution API
を有効にしておく
今回は指定したスプレッドシートのシート名一覧を取得するプログラムにします。
function getSheetNames(sheetId) {
var ss = SpreadsheetApp.openById(sheetId);
var sheets = ss.getSheets();
return sheets.map(function(sheet) {
return sheet.getName();
});
}
function myFunction() {
Logger.log(getSheetNames("●●●●●●●●"));
}
上記の引数は実際のシート ID
をセットします。
実行可能 API として導入する
ここで以下の項目を取得しておきます。
スクリプトエディタ画面で実行可能 API として導入
API ID
スクリプトエディタ画面でプロパティ
このスクリプトで必要な OAuth スコープ
Developer Console プロジェクトと関連付ける
ここで以下の項目を設定しておきます。
スクリプトエディタ画面でDeveloper Console プロジェクト
- 関連付けられた Developer Console プロジェクト
Developer Console プロジェクトが関連付けられて作成されますが、既存のプロジェクトに変更することもできます。
Developer Console プロジェクトで Google Apps Script Execution API を有効にしておく
これは忘れずに実行してかないといけません。
Cordova アプリを作成して Google API 呼出できるようにする
以前に作成した Cordova プロジェクトを使います。
Cordova アプリで Google Apps Script で書いたプログラムを呼出する
Google API を呼出するのと同じ要領で、Apps Script で書いたプログラムが呼出できます。
var scope = 'https://www.googleapis.com/auth/spreadsheets';
$('#request').click(function(){
if (!accessToken) {
return;
}
// ③リクエストを送信
$.ajax({
type: 'post',
url: 'https://script.googleapis.com/v1/scripts/●●●●●●●●●●:run',
data: JSON.stringify({
'function': 'getSheetNames',
'parameters': '●●●●●●●●●●',
'devMode': true
}),
contentType: 'application/json',
dataType: 'json',
beforeSend: function(xhr, settings){
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
}
})
.done(function(data, status){
console.log(status, data);
})
.fail(function(data, status){
console.log(status, data);
});
});
メモ
ヘッダに Authorization: Bearer [アクセストークン]
をセットしないといけないのは分かって、
$.post({
headers: {
'Authorization', 'Bearer ' + accessToken
},
としていたが、エラーになる。beforeSend
プロパティを使うのが分かるのに苦労しました。
data
プロパティに直接オブジェクトをセットして
data: {
'function': 'getSheetNames',
'parameters': '●●●●●●●●●●',
'devMode': true
},
としていたが、エラーになる。文字列にしないといけないのに分かるのに苦労しました。
Author And Source
この問題について(Cordova アプリで Google Apps Script で書いたプログラムを呼出してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/tinymouse/items/3d40b17663cea2dfc394著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .