ちょっと前に流行ったラノベみたいなタイトルになってしまったが後悔はしていない。
例えば数箇所で行うイベントの予約をGoogleDriveのフォームで取っていたとして、予約のリストが回答というスプレットシートに反映されます。で、入金を確認した時にシートにチェックを入れたら自動的に予約者のデータがある行(ROW)を各イベントのシートにコピーしたいけど、手動コピーはミスが出るからやりたくないね―と思いスクリプトを書いてみました。
需要あるのかどうか極めて謎な超範囲が狭いスクリプトです。。。
シート例
シート名: 回答
timestamp | Name | Event | is_payment |
---|---|---|---|
1917/11/8 | れーにん | Tokyo | 0 |
1922/4/3 | よしふ | Osaka | 0 |
1953/9/7 | にきーた | Osaka | 0 |
1964/10/14 | ぶれじねふ | Moscow | 0 |
1982/11/12 | あんどろぽふ | Tokyo | 0 |
1984/2/13 | ちぇるねんこ | Tokyo | 0 |
1985/3/11 | ごるびぃ | Moscow | 0 |
支払いがあった時にis_payment
を1
にします。
その時にEvent
行の内容別で対象のシートにその列をコピーします。
イベントをコピーする対象のシート名東京・大阪・モスクワ
※予めシートを作成しておく必要があります
Google Apps Script
// シート名を指定してrangeのデータをコピーする関数 function copyRowData(sheetName, range) { // コピーするシート名 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); var row = sheet.getLastRow(); // コピーするシートの先頭にidをつける var id = 'ID: ' + ('00' + row).slice(-3); row+=1; sheet.getRange(row, 1).setValue( id ); // rangeのデータをコピーする range.copyTo( sheet.getRange(row, 2) ); } // onEdit Event function onEditEvent(evt) { // 編集のあったシート var ss = evt.source.getActiveSheet(); //編集したセル var cell = evt.source.getActiveRange(); // シート名が「回答」 かつ 編集のあったセル番号が4番目 かつ セルの値が「1」の時 // getValue() の値が0と入力しても数値と文字列どちらで取れるか曖昧なので、あえて == にしています if(ss.getName() === '回答' && cell.getColumn() == 4 && cell.getValue() == 1) { // 編集があったセルのある行番号 var r = cell.getRow(); var rowRange = ss.getRange(r, 1, 1, ss.getMaxColumns()); // eventのセルは3番目 var eventVal = rowRange.getCell(1, 3).getValue(); if(eventVal === 'Tokyo') { // シート名「東京」に行をコピー copyRowData('東京', rowRange); } else if(eventVal === 'Osaka') { // シート名「大阪」に行をコピー copyRowData('大阪', rowRange); } else if(eventVal === 'Moscow') { // シート名「モスクワ」に行をコピー copyRowData('モスクワ', rowRange); } } }
- メニュー リソースから現在のプロジェクトのトリガーを選択
- 実行を
onEditEvent
に変更 - イベントをスプレットシートからに変更
- 隣のアクションを編集時に変更
- 保存 ボタンを押してイベントをトリガーする
これで、回答のシートのis_payment
セルを1に変更すると、対象のシートにその行がコピーできるようになりました!
[参考]
- Google Apps Script Documentation - Spreadsheet Services
- 異なるスプレッドシートからセルをコピーする - 勉強用BLOG
- JavaScriptで日付や時間の0詰めを実装する - tagamidaiki.com
冴えない彼女の育てかた キャラクターイメージソング 澤村・スペンサー・英梨々
- アーティスト: 澤村・スぺンサー・英梨々(CV:大西沙織)
- 出版社/メーカー: Aniplex (music)
- 発売日: 2014/12/03
- メディア: CD
- この商品を含むブログ (1件) を見る