[GoogleAppScript] SpreadSheet에 무작위 값을 쓰는 기능 추가
13913 단어 GoogleAppsScriptgas
개요
임의의 정수와 캐릭터 라인을 랜덤으로 취득한 값을 SpreadSheet 에 추가하는 기능을 작성하는 순서에 대해 정리한다.
※임의의 정수와 캐릭터 라인을 랜덤하게 취득하는 방법에 대해서는 [Javascript] 지정된 범위의 정수를 취득하는 랜덤 클래스의 작성 에 기재
전제 지식
아티팩트
[My Menu] → [도도부현과 연령을 랜덤하게 취득]을 클릭하면, 「도도부현(문자열)」과 「연령(수치)」열에 랜덤인 임의의 값이 추가되는 기능의 구현

전체상
함수 실행의 흐름을 아래 그림으로 표시

구현 코드
Random.gsclass Random {
// min: 最小値 include
// max: 最大値 exclude
intRange(min,max){
return Math.floor(min + (max-min) * Math.random())
}
}
코드.gsconst onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('My Menu') // 上部メニューにMy Menuを追加
.addItem('都道府県と年齢をランダムに書き込む', 'appendUserInfo')
.addToUi();
}
//都道府県のリスト
const prefList = ["北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県"]
//list からランダムで一つ返す
const getRandomPref = (list) =>{
const random = new Random();
const prefListNum = random.intRange(0,list.length);
return list[prefListNum];
}
//年齢をmin(include)~max(exclude)の範囲でランダムに返す
const getRandomAge = (min, max) =>{
const random = new Random();
return random.intRange(min,max);
}
// userInfoをsampleシートに書き込む
const appendRow = (userInfo) => {
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("sample");
sheet.appendRow([userInfo.pref,userInfo.age]);
}
// メニューのボタンを押すと実行される関数
const appendUserInfo = () =>{
// 20個のデータを作る
for (let i = 0; i < 20; i++){
const pref = getRandomPref(prefList);
const age = getRandomAge(18,66);
// 書き込むデータ(1行)
const userInfo = {
pref:pref,
age:age
}
appendRow(userInfo);
}
Browser.msgBox("データの整備が完了しました");
}
※함수 밖에서 랜덤 클래스의 인스턴스화를 실시하고 싶었지만, 할 수 없었기 때문에 getRandomPref
, getRandomAge
함수의 각각으로 인스턴스화를 행하고 있다
탭에 함수 실행 버튼 만들기
onOpen
는 스프레드시트 시작 시 실행되는 특수 함수 이름입니다.SpreadsheetApp.getUi()
는 탭에서 함수를 실행하는 메뉴를 만들 때 사용합니다.
const onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('タブ名')
.addItem('関数の表示名', '呼び出す関数名')
.addToUi();
참고 : Google App Script getUi
배열 정의 및 검색
//配列の定義
const 配列の変数名 = [配列の要素1, 配列の要素2, 配列の要素3,・・・];
//配列の要素の取得方法
配列[何番目かを示す数]
스프레드시트에 값 추가
appendRow
는 한 줄씩 값 (배열로 전달)을 추가하는 함수
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("シート名");
sheet.appendRow([A列に追加する値,B列に追加する値,・・・]);
참고 : Google App Script appendRow
for 문 (반복)을 작성하는 방법
for 문 (반복)을 처리하려면 다음과 같이
for(let i = 0; i < ループ数; i++){
繰り返す処理
}
각각, 이하와 같은 의미가 있지만, 상기의 기술 방법을 정형문으로서 기억해 두면 문제 없다let i = 0
: 최초로 실행하는 처리의 정의i < ループ数
: 루프 계속 조건i++:
루프 마다 실행되는 처리
팝업 표시
처리가 끝났을 때 등에 팝업을 표시할 수 있다
.jsBrowser.msgBox("表示したいメッセージ")
참고 : Google App Script msgBox
요약
GAS 스크립트 편집기는 무겁다 (특히 onOpen
).
탭등도 기재하기 어렵기 때문에, 다른 에디터를 이용하는 편이 좋은 생각이 든다.
참고
함수 실행의 흐름을 아래 그림으로 표시

구현 코드
Random.gsclass Random {
// min: 最小値 include
// max: 最大値 exclude
intRange(min,max){
return Math.floor(min + (max-min) * Math.random())
}
}
코드.gsconst onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('My Menu') // 上部メニューにMy Menuを追加
.addItem('都道府県と年齢をランダムに書き込む', 'appendUserInfo')
.addToUi();
}
//都道府県のリスト
const prefList = ["北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県"]
//list からランダムで一つ返す
const getRandomPref = (list) =>{
const random = new Random();
const prefListNum = random.intRange(0,list.length);
return list[prefListNum];
}
//年齢をmin(include)~max(exclude)の範囲でランダムに返す
const getRandomAge = (min, max) =>{
const random = new Random();
return random.intRange(min,max);
}
// userInfoをsampleシートに書き込む
const appendRow = (userInfo) => {
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("sample");
sheet.appendRow([userInfo.pref,userInfo.age]);
}
// メニューのボタンを押すと実行される関数
const appendUserInfo = () =>{
// 20個のデータを作る
for (let i = 0; i < 20; i++){
const pref = getRandomPref(prefList);
const age = getRandomAge(18,66);
// 書き込むデータ(1行)
const userInfo = {
pref:pref,
age:age
}
appendRow(userInfo);
}
Browser.msgBox("データの整備が完了しました");
}
※함수 밖에서 랜덤 클래스의 인스턴스화를 실시하고 싶었지만, 할 수 없었기 때문에 getRandomPref
, getRandomAge
함수의 각각으로 인스턴스화를 행하고 있다
탭에 함수 실행 버튼 만들기
onOpen
는 스프레드시트 시작 시 실행되는 특수 함수 이름입니다.SpreadsheetApp.getUi()
는 탭에서 함수를 실행하는 메뉴를 만들 때 사용합니다.
const onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('タブ名')
.addItem('関数の表示名', '呼び出す関数名')
.addToUi();
참고 : Google App Script getUi
배열 정의 및 검색
//配列の定義
const 配列の変数名 = [配列の要素1, 配列の要素2, 配列の要素3,・・・];
//配列の要素の取得方法
配列[何番目かを示す数]
스프레드시트에 값 추가
appendRow
는 한 줄씩 값 (배열로 전달)을 추가하는 함수
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("シート名");
sheet.appendRow([A列に追加する値,B列に追加する値,・・・]);
참고 : Google App Script appendRow
for 문 (반복)을 작성하는 방법
for 문 (반복)을 처리하려면 다음과 같이
for(let i = 0; i < ループ数; i++){
繰り返す処理
}
각각, 이하와 같은 의미가 있지만, 상기의 기술 방법을 정형문으로서 기억해 두면 문제 없다let i = 0
: 최초로 실행하는 처리의 정의i < ループ数
: 루프 계속 조건i++:
루프 마다 실행되는 처리
팝업 표시
처리가 끝났을 때 등에 팝업을 표시할 수 있다
.jsBrowser.msgBox("表示したいメッセージ")
참고 : Google App Script msgBox
요약
GAS 스크립트 편집기는 무겁다 (특히 onOpen
).
탭등도 기재하기 어렵기 때문에, 다른 에디터를 이용하는 편이 좋은 생각이 든다.
참고
class Random {
// min: 最小値 include
// max: 最大値 exclude
intRange(min,max){
return Math.floor(min + (max-min) * Math.random())
}
}
const onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('My Menu') // 上部メニューにMy Menuを追加
.addItem('都道府県と年齢をランダムに書き込む', 'appendUserInfo')
.addToUi();
}
//都道府県のリスト
const prefList = ["北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県"]
//list からランダムで一つ返す
const getRandomPref = (list) =>{
const random = new Random();
const prefListNum = random.intRange(0,list.length);
return list[prefListNum];
}
//年齢をmin(include)~max(exclude)の範囲でランダムに返す
const getRandomAge = (min, max) =>{
const random = new Random();
return random.intRange(min,max);
}
// userInfoをsampleシートに書き込む
const appendRow = (userInfo) => {
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("sample");
sheet.appendRow([userInfo.pref,userInfo.age]);
}
// メニューのボタンを押すと実行される関数
const appendUserInfo = () =>{
// 20個のデータを作る
for (let i = 0; i < 20; i++){
const pref = getRandomPref(prefList);
const age = getRandomAge(18,66);
// 書き込むデータ(1行)
const userInfo = {
pref:pref,
age:age
}
appendRow(userInfo);
}
Browser.msgBox("データの整備が完了しました");
}
const onOpen = (e) => {
SpreadsheetApp.getUi()
.createMenu('タブ名')
.addItem('関数の表示名', '呼び出す関数名')
.addToUi();
//配列の定義
const 配列の変数名 = [配列の要素1, 配列の要素2, 配列の要素3,・・・];
//配列の要素の取得方法
配列[何番目かを示す数]
const spreadSheet = SpreadsheetApp.getActive();
const sheet = spreadSheet.getSheetByName("シート名");
sheet.appendRow([A列に追加する値,B列に追加する値,・・・]);
for(let i = 0; i < ループ数; i++){
繰り返す処理
}
Browser.msgBox("表示したいメッセージ")
GAS 스크립트 편집기는 무겁다 (특히
onOpen
).탭등도 기재하기 어렵기 때문에, 다른 에디터를 이용하는 편이 좋은 생각이 든다.
참고
Reference
이 문제에 관하여([GoogleAppScript] SpreadSheet에 무작위 값을 쓰는 기능 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ub0t0/items/017672373e654a4881e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)