Google Apps ScriptからGoogleスプレッドシートを操作する方法をメモ。
Google Apps ScriptとGoogleスプレッドシートを紐づける場合
まずはスプレッドシートとGoogle Apps Scriptを紐づける方法を試してみます。
新しくスプレッドシートを作成して、ツール > スクリプト エディタ を選択します。
Google Apps Scriptファイルが生成されます。
myFunction()内に以下のように記述します。
function myFunction() { Browser.msgBox('test'); }
上部メニューにある実行ボタンをクリックします。
初めての場合は承認のアラートが表示されるので許可すると、最初のスプレッドシートにアラートで「test」と表示されました。
次にスプレッドシートとその中のシートを指定して書き込みを行ってみます。
function myFunction() { // 対象のスプレッドシートを取得 var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート内のシート一覧を取得 var sheets = spread.getSheets(); // 指定したシート(1番目)の左上に書き込み sheets[0].getRange(1, 1).setValue('test'); }
上部メニューにある実行ボタンをクリックします。
スプレッドシートに戻ると、シートの左上に「test」と記述できました。
先ほどは何番目のシート化を指定しましたが、シート名を指定することもできます。
function myFunction() { // 対象のスプレッドシートを取得 var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート内のシートを取得 var sheet = spread.getSheetByName('シート1'); // 指定したシート(シート1)の左上に書き込み sheet.getRange(1, 1).setValue('test2'); }
上部メニューにある実行ボタンをクリックします。
スプレッドシートに戻ると、シートの左上に「test2」と記述できました。
Google Apps ScriptとGoogleスプレッドシートを紐づけない場合
スプレッドシートとGoogle Apps Scriptを別々に用意する方法を試してみます。
新しくスプレッドシートとGoogle Apps Scriptを別々に作成します。
myFunction()内に以下のように記述します。
function myFunction() { // 対象のスプレッドシートを取得 var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート内のシート一覧を取得 var sheets = spread.getSheets(); // 指定したシート(1番目)の左上に書き込み sheets[0].getRange(1, 1).setValue('test'); }
上部メニューにある実行ボタンをクリックします。
最初のサンプルではスプレッドシートに「test」と表示されましたが、今回は表示されずに以下のようなエラーが表示されました。
これはスプレッドシートとGoogle Apps Scriptを別々に作成したため紐づいておらず、Google Apps Scriptからスプレッドシートを見つけられていないためです。
スプレッドシートのIDまたはURLを指定することで、紐づけを行えます。
まずはIDを指定してみます。
function myFunction() { // 対象のスプレッドシートを取得 var spread = SpreadsheetApp.openById('XXXXXXXXXX'); // スプレッドシート内のシート一覧を取得 var sheets = spread.getSheets(); // 指定したシート(1番目)の左上に書き込み sheets[0].getRange(1, 1).setValue('test'); }
IDはスプレッドシートURLの以下の「XXXXXXXXXX」の部分になります。
https://docs.google.com/spreadsheets/d/XXXXXXXXXX/edit
上部メニューにある実行ボタンをクリックします。
スプレッドシートに戻ると、シートの左上に「test」と記述できました。
次にURLを指定してみます。
function myFunction() { // 対象のスプレッドシートを取得 var spread = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/XXXXXXXXXX/edit'); // スプレッドシート内のシート一覧を取得 var sheets = spread.getSheets(); // 指定したシート(1番目)の左上に書き込み sheets[0].getRange(1, 1).setValue('test2'); }
上部メニューにある実行ボタンをクリックします。
スプレッドシートに戻ると、シートの左上に「test2」と記述できました。
【参考サイト】
コメントが承認されるまで時間がかかります。