#成果物
googleスプレッドシートの項目をターミナルから追加するプログラムを作りたいと思います!
↓
#前提知識
・javascript関数の基礎
・ターミナルの基本コマンド
#gasで関数を作成する
googleのツールの編集や連携をするための言語、gas(Google Apps Script)を使用します。スプレッドシートに、ターミナルから送られてきた情報を受け取り、スプレッドシートに書き込むプログラムを作ります。
まずスプレッドシートの1行目に受け取るデータの項目を作ります。
シート名も任意の名前に変更しておきます。ここでは"monster"としました。
スクリプトエディタにgasでプログラムを書いていきます。
//doPostという関数を作ります。通信を受け取る関数名は必ずこの名前にします。
const doPost = (e) => {
const data = {
name:e.parameter.name,
hp:e.parameter.hp,
attack:e.parameter.attack,
};
//下のappendMonsterの関数が実行されたら、OK!というテキストを返す(この場合はターミナルへ返します。この一文がないとプログラムは実行できているのにターミナル側にはエラーと返ってきてしまいます)
appendMonster(data);
return ContentService.createTextOutput("ok!");
}
//appendMonsterという関数を作ります。
const appendMonster = (data) => {
//アクティブなスプレットシートを取得
const spreadsheet = SpreadsheetApp.getActive();
//monsterというシートを取得
const monsterSheet = spreadsheet.getSheetByName("monster");
//それぞれの項目の情報を一番下の列に挿入する
monsterSheet.appendRow([data.name,data.hp,data.attack]);
}
#関数をAPIとして公開
関数をAPIとして公開し、ターミナルから接続できるようにします。
先ほどのスクリプトエディタの
公開からウェブアプリケーションとして導入を選択します。
注意点
プロジェクトバージョンは毎回newで、任意の名前を入れ更新してください。(こうしないと変更が反映されないことがあります)
appにアクセスできるのは、anyoneを選択してください。
これらの設定が済んだら、更新を押し、
このURLをコピーしておきます。
これでスプレッドシート側の準備は完了です!
#ターミナルから通信
makefileを使ってターミナルから通信していきます。
makefileとは:https://qiita.com/seihmd/items/42996d5abb14badf775e
ホームの中に、makefileを入れるための任意のフォルダを作っておきます。
まず以下のコマンドをうち、makefileのファイルを作っていきます。
touch makefile
makefileの中は以下のように書いていきます。
API_URL = 先ほどスプレッドシート側でコピーしたURL
appenddata:
curl -L $(API_URL) \
-F 'name=炭治郎' \
-F 'hp=50' \
-F 'attack=10'
appenddataという関数の中では、まずcurlという通信コマンドを使って、URLにアクセスし、以下のデータを受け渡します。
curlについて:https://qiita.com/yasai10reta/items/472cdc7fa15e99038f96?fbclid=IwAR1R3nRBNHqpId9bCXYeJ-YF9xAZCESJNPqhLAhRAbtaM1pNvPxdm90VgRM
最後に以下のコマンドでappenddataを呼び出します。
make appenddata