カテゴリー別アーカイブ: GAS

Google Apps Scriptのバージョン管理

Google Apps Scriptは、なかなかいいんだけど
バージョン管理があんまりうまくできなくて

なので、ローカルに落として
Gitで管理する手順をメモメモ

まずは、node-google-apps-script をインストール!

Google Developer Console のプロジェクトで Drive API を有効にし、
OAuth client ID と secret(json)を取得

下記のコマンドを実行して、返ってきたURLにブラウザでアクセス

ファイルを落としたいフォルダに移動して
下記のコマンドを実行!

キーには、ScriptのファイルID、またはスクリプト IDを設定

以上!

【Google Apps Script】5分の壁の向こう側

Google Apps Scriptで処理を実行していて
[起動時間の最大値を超えました]
なんてメッセージが出たので対応方法をメモメモ

どうやら5分以上かかる処理をやっちゃダメよ!
ってことらしいのだ。。。
まぁ無限ループとかされてもねってことで
しょうがないのかな

5分(この例だと正確には4分48秒)以上かかってたら
自分の関数を、1分間隔のトリガーにセットしてから処理終了。

で、再度始まったときにそのトリガーを削除するようにすればOK!

途中までの結果を残しておきたい場合は、
シートとかユーザプロパティやらになんか書き残しておこう!

【GAS】スプレッドシートにグラフを挿入

Google スプレッドシートに
Google apps scriptでグラフを挿入
そんときの手順をメモメモ

感想としては微妙、、、
というか、スプレッドシートのグラフが微妙

エクセルで出来ることが、実現できない。。。
がんばれGoogle、、、あんまり力を入れてないのか、、、

【google apps script】スプレッドシートの最終行を取得

スプレッドシートをいろいろ触ってて
最終行を取得したくなったのでメモメモ

1.単純にシートの最終行を取得

2.指定した範囲の最終行を取得

3.指定した範囲で文字が入力されている最終行を取得

【Google apps script】 リフレッシュトークンを使用してAPIをたたきたい

var CLIENT_ID = ‘xxxxxxxxxxxxxx’;
var CLIENT_SECRET = ‘xxxxxxxxxxxxxx’;
var AUTHORIZE_URL = ‘https://accounts.google.com/o/oauth2/auth’;
var TOKEN_URL = ‘https://accounts.google.com/o/oauth2/token’;
var REDIRECT_URI = ‘urn:ietf:wg:oauth:2.0:oob’;

こちらのURLにブラウザでアクセスして承認コードを取得(search console api を使用する場合)
使用するAPIによってscopeを変更

次に、 取得したコードからリフレッシュトークンを取得

リフレッシュトークンを指定して、アクセストークンを取得

これで取得したアクセストークンを使用して
APIをたたけばOK!

有効期限が切れそうになったら、アクセストークンを
再取得しよー

【GAS】スプレッドシートにHTMLを表示

Google Apps Script を使って
スプレッドシートにHTMLを表示させたいときのサンプル

HTMLといってもURL指定とかじゃなくて
htmlのソースをスクリプトエディタで作って、、、

まずは、スクリプトエディタから
新規作成でHTMLファイルを作る。

【GAS】グラフを作成して画像で保存

・参考
https://developers.google.com/apps-script/reference/charts/

GAS APIをたたいてJSONを取得してスプレッドシートに反映させる

GASを学んでみる
自己証明書を使ったベーシック認証のかかったAPIにアクセスして
スプレッドシートに取得した値を表示してみる。

// スプレッドシートが開かれたタイミングで実行される
function onOpen(event){
var menuitems = [
{name:’データ取得’, functionName:’getData’}
];
var sheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなシート
sheet.addMenu(‘★’, menuitems); // スプレッドシートにメニューを追加
}

function getData(){
var apiUrl = ‘https://xxxx.com’;

// リクエストの中身
var extUrl = ‘Api/getLog’,
auth_data = Utilities.base64Encode(‘user:pass’), // ベーシック認証のURL
headers = {‘Authorization’ : ‘Basic ‘ + auth_data},
params = {
‘headers’ : headers,
‘validateHttpsCertificates’ : false // 自己証明書の場合、証明書のチェックしない
};

// fetch
var response = UrlFetchApp.fetch(apiUrl + extUrl , params),
result = JSON.parse(response.getContentText());

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

for (var i = 0; i < result.length; i++) {
var val = result[i];
sheet.getRange(10+i,1).setValue(val);
}
}