LoginSignup
1
3

More than 3 years have passed since last update.

【GAS】自動で別のスプレッドシートからコピペしてくれるボタンが欲しかった

Posted at

経緯

【Exel】横書きで書かれた諸々を関数で縦書きの脚本にしたかった

の記事に書いた通り実装してみたものの、もはやコピペする作業すらめんどくさいのではないかと思った。
なので、上記記事の別バージョンとして、ワンタッチ式台本化ツールを作ることにした。

やりたいこと

  1. B2セルに台本化したい漫画の仕様書のURLを書く
  2. B3セルに台本化したいシート名を書く
  3. ボタンを押したら台本が出来上がる

仕組み

経緯にある通り、すでに基礎はできている。
要は、元となる仕様書を全部コピってきて、台本化してくれるシートに張り付けてくれればいい。

作りたいものは
コピー元のシートを全コピーして、コピー先のシートに張り付けてくれるスクリプト

実装

そんなわけで、作りました。
こちらも大体コピペさせていただきました。

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を設定したボタンを置いて実行

1
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
1
3