#経緯
【Exel】横書きで書かれた諸々を関数で縦書きの脚本にしたかった
の記事に書いた通り実装してみたものの、もはやコピペする作業すらめんどくさいのではないかと思った。
なので、上記記事の別バージョンとして、ワンタッチ式台本化ツールを作ることにした。
#やりたいこと
- B2セルに
台本化したい漫画の仕様書のURL
を書く - B3セルに
台本化したいシート名
を書く - ボタンを押したら台本が出来上がる
#仕組み
経緯にある通り、すでに基礎はできている。
要は、元となる仕様書を全部コピってきて、台本化してくれるシートに張り付けてくれればいい。
作りたいものは
コピー元のシートを全コピーして、コピー先のシートに張り付けてくれるスクリプト
だ
#実装
そんなわけで、作りました。
こちらも大体コピペさせていただきました。
GASで別スプレッドシートの値のある全範囲をコピー&ペーストする方法
ありがとうございます。
gas
/*
*
*メイン処理
*仕様書全部コピってペーストしたい
*台本化はシート側の関数でやってくれる
*
*/
function getScenario() {
var sv = SpreadsheetApp.getActiveSpreadsheet();//このスクリプトが反映されてるスプレッドシートから
var sheet = sv.getSheetByName("swich");//swichシートを選んで
var sheet_name = sheet.getRange(3, 2).getDisplayValue();//B3セルに記入された文字列を取得
var adress = sheet.getRange(2, 2).getDisplayValue();//B2セルに記入されたurlを取得
var ss_copyFrom = SpreadsheetApp.openByUrl(adress); //コピー元のマスターデータのあるスプレッドシートキー
var ss_copyTo = SpreadsheetApp.getActiveSpreadsheet();
var sheet_copyFrom = ss_copyFrom.getSheetByName(sheet_name); //コピー元のスプレッドシートの値を抜き出したいシート名
var sheet_copyTo = ss_copyTo.getSheetByName('change_scenario'); //ペーストする自分のスプレッドシートのシート名
sheet_copyTo.clear();// 一旦コピペ先のシートをクリア。
var lastRow = sheet_copyFrom.getLastRow(); //最終行を取得
var lastColumn = sheet_copyFrom.getLastColumn(); //最終列を取得
var copyValue = sheet_copyFrom.getRange(1,1,lastRow,lastColumn).getValues(); //コピー元のシートから値の入っている全範囲をコピー
sheet_copyTo.getRange(1,1,lastRow,lastColumn).setValues(copyValue); //自分のシートにコピーした値を全範囲をペースト
}
このスクリプトを反映させたボタンを置けばOK。
他の人が使うときは、初回のみ許可するくだりがあるので注意?が必要。
#参考
GASで別スプレッドシートの値のある全範囲をコピー&ペーストする方法
スプレッドシートにgasを設定したボタンを置いて実行