2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ターミナルからgoogleスプレッドシートを編集する方法

Last updated at Posted at 2020-08-30

#成果物
googleスプレッドシートの項目をターミナルから追加するプログラムを作りたいと思います!
スクリーンショット 2020-08-30 12.33.01.jpg
 ↓
スクリーンショット 2020-08-30 12.32.04.jpg

スクリーンショット 2020-08-30 12.40.14.jpg

#前提知識
・javascript関数の基礎
・ターミナルの基本コマンド

#gasで関数を作成する
googleのツールの編集や連携をするための言語、gas(Google Apps Script)を使用します。スプレッドシートに、ターミナルから送られてきた情報を受け取り、スプレッドシートに書き込むプログラムを作ります。

まずスプレッドシートの1行目に受け取るデータの項目を作ります。
シート名も任意の名前に変更しておきます。ここでは"monster"としました。
スクリーンショット 2020-08-30 12.33.01.jpg

ツールからスクリプトエディタを開きます。
スクリーンショット 2020-08-30 12.43.49.jpg

スクリプトエディタにgasでプログラムを書いていきます。

.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として公開し、ターミナルから接続できるようにします。

先ほどのスクリプトエディタの
公開からウェブアプリケーションとして導入を選択します。
スクリーンショット 2020-08-30 13.00.38.jpg

注意点
プロジェクトバージョンは毎回newで、任意の名前を入れ更新してください。(こうしないと変更が反映されないことがあります)
スクリーンショット 2020-08-30 13.03.32.jpg

appにアクセスできるのは、anyoneを選択してください。
スクリーンショット 2020-08-30 13.03.39.jpg

これらの設定が済んだら、更新を押し、スクリーンショット 2020-08-30 13.07.41.jpg
このURLをコピーしておきます。
これでスプレッドシート側の準備は完了です!

#ターミナルから通信
makefileを使ってターミナルから通信していきます。
makefileとは:https://qiita.com/seihmd/items/42996d5abb14badf775e
ホームの中に、makefileを入れるための任意のフォルダを作っておきます。

まず以下のコマンドをうち、makefileのファイルを作っていきます。

.command
touch makefile

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

スプレッドシートに以下のように行が追加されました!
スクリーンショット 2020-08-30 12.32.04.jpg

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?