高橋かずひとのプログラミング、その他、備忘録。

日々調べてたことや、作ってみたものをメモしているブログ。 お決まりの断り文句ですが、このブログに書かれている内容は個人の見解であり、所属する組織の公式見解ではありません。チラ裏。

【GAS】Googleドライブ上のスプレッドシートを追記するWeb API

今さらながらGASの便利さに気付き色々試しております。

本頁は、Google Apps Script をWebAPIとして利用して、Googleドライブ上のスプレッドシートに追記するメモです。


Googleドライブ上にスプレッドシートを用意します。 f:id:Kazuhito00:20180318023626j:plain

GASからアクセスできるように共有可能なリンクを取得します。 f:id:Kazuhito00:20180318023637j:plain

「?id=」以降がGAS側で利用するIDです。 f:id:Kazuhito00:20180318023651j:plain

たいしたコードでも無いので、ソースコードにそのままIDを埋め込んでも良いですが、 一応GASのプロジェクトプロパティにIDを入れておきます。 f:id:Kazuhito00:20180318023708j:plain f:id:Kazuhito00:20180318023716j:plain

GAS上のソースコードは以下です。 リクエストパラメータは手抜きしてactionをそのまま使用。。。

function doGet(e) {
  // action未指定の場合
  if(!e.parameter.action) { 
    return ContentService.createTextOutput(JSON.stringify({'status': 'NG'}))
           .setMimeType(ContentService.MimeType.JSON);
  }

  // スプレッドシートに記録
  // プロジェクトプロパティからスプレッドシートのIDを取得
  var PROPERTIES = PropertiesService.getScriptProperties();
  var SPREAD_SHEET = PROPERTIES.getProperty('SPREAD_SHEET')
  var sheet = SpreadsheetApp.openById(SPREAD_SHEET);
  // スプレッドシートに追記するCSVデータを生成
  var appendData = new Array();
  var cells = e.parameter.action.split(",")
  for(var i = 0; i<cells.length;i++){
    appendData.push(cells[i])
  }
  // スプレッドシートの最終行に追記
  sheet.appendRow(appendData);

  return ContentService.createTextOutput(JSON.stringify({'status': 'OK'}))
         .setMimeType(ContentService.MimeType.JSON);
}

ウェブアプリケーションとして導入」を実施します。 f:id:Kazuhito00:20180318023731j:plain

アプリケーションにアクセスできるユーザーは「全員(匿名ユーザーを含む)」に設定し「更新」を実施します。

初回はGoogleドライブ上へのアクセス許可を求められるはず。。 。 スクリーンショット取り忘れました。。。 f:id:Kazuhito00:20180318023743j:plain

テストとしてブラウザから「1,2,3, ,abcde」を指定して呼び出してみます。 f:id:Kazuhito00:20180318023754j:plain

スプレッドシートに追記されました。 f:id:Kazuhito00:20180318023808j:plain

以上。