【GAS】풀다운의 연동
16535 단어 GoogleAppsScript
코드 작성 후의 움직임
코드
GAS 코드function onEdit(e) {
// リストと一致しなかったら終了
const value = e.value;
const list = ['あ行', 'か行', 'さ行', 'た行', 'な行', 'は行', 'ま行', 'や行以降'];
if (!list.includes(value)) return;
const range = e.range;
const sht = range.getSheet();
// シート名が違ったら終了
if(sht.getName() !== 'data') return;
const row = range.getRow();
const col = range.getColumn() + 1; //入力箇所からズラす列数
// 入力規則の範囲取得
const shtName = 'プルダウン';
const pulldownSht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
// 項目名取得
const items = pulldownSht.getRange('1:1').getValues().flat().filter(val => val);
// rangeの取得
const pulldownCol = items.indexOf(value) + 1;
const pulldownLastRow = pulldownSht.getMaxRows() - 1;
const pulldownRange = pulldownSht.getRange(2, pulldownCol, pulldownLastRow, 1);
// rule作成
const rule = SpreadsheetApp.newDataValidation();
rule.requireValueInRange(pulldownRange);
sht.getRange(row, col).setDataValidation(rule);
}
여기의 시트에서는 풀다운의 Range를 취득해 풀다운을 범위로 지정하고 있으므로,
풀다운 시트에 추가 항목이 있을 때 그것도 대상이 되는 범용적인 쓰기 방법으로 하고 있습니다.
만약 고정으로 좋다고 하는 것이라면, 이쪽이 추천입니다.
시트 API를 두드리지 않는 만큼 움직임이 빨라집니다.
코드 2function onEdit(e) {
// リストと一致しなかったら終了
const value = e.value;
const list = ['あ行', 'か行', 'さ行', 'た行', 'な行', 'は行', 'ま行', 'や行以降'];
if (!list.includes(value)) return;
const range = e.range;
const sht = range.getSheet();
// シート名が違ったら終了
if(sht.getName() !== 'data') return;
const row = range.getRow();
const col = range.getColumn() + 1; //入力箇所からズラす列数
const obj = {
'あ行': ['あ', 'い', 'う', 'え', 'お', ],
'か行': ['か', 'き', 'く', 'け', 'こ', ],
'さ行': ['さ', 'し', 'す', 'せ', 'そ', ],
'た行': ['た', 'ち', 'つ', 'て', 'と', ],
'な行': ['な', 'に', 'ぬ', 'ね', 'の', ],
'は行': ['は', 'ひ', 'ふ', 'へ', 'ほ', ],
'ま行': ['ま', 'み', 'む', 'め', 'も', ],
'や行以降': ['や', 'ゆ', 'よ', 'わ', 'を', 'ん', ],
}
// rule作成
const rule = SpreadsheetApp.newDataValidation();
rule.requireValueInList(obj[value]);
sht.getRange(row, col).setDataValidation(rule);
}
차이는 rurle requireValueInRange
또는 requireValueInList
입니다.
보충
스프레드시트 입력 규칙만으로 구현할 수 있지만,
행수가 많아지면 무거워져 운용적으로 NG였습니다.
GAS로 다르면 바로 처리를 멈추는 방법이 실용적이었습니다.
범위를 지정하는 경우 열의 0 열 앞에서만 움직이거나 설정을 추가해도
좋을까라고 생각하면서, 풀다운의 내용을 오기입하는 것도 적을까라고도 생각하고 있습니다.
Reference
이 문제에 관하여(【GAS】풀다운의 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/plumfield56/items/06ff6d8a0150ec0cd6d8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GAS 코드
function onEdit(e) {
// リストと一致しなかったら終了
const value = e.value;
const list = ['あ行', 'か行', 'さ行', 'た行', 'な行', 'は行', 'ま行', 'や行以降'];
if (!list.includes(value)) return;
const range = e.range;
const sht = range.getSheet();
// シート名が違ったら終了
if(sht.getName() !== 'data') return;
const row = range.getRow();
const col = range.getColumn() + 1; //入力箇所からズラす列数
// 入力規則の範囲取得
const shtName = 'プルダウン';
const pulldownSht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
// 項目名取得
const items = pulldownSht.getRange('1:1').getValues().flat().filter(val => val);
// rangeの取得
const pulldownCol = items.indexOf(value) + 1;
const pulldownLastRow = pulldownSht.getMaxRows() - 1;
const pulldownRange = pulldownSht.getRange(2, pulldownCol, pulldownLastRow, 1);
// rule作成
const rule = SpreadsheetApp.newDataValidation();
rule.requireValueInRange(pulldownRange);
sht.getRange(row, col).setDataValidation(rule);
}
여기의 시트에서는 풀다운의 Range를 취득해 풀다운을 범위로 지정하고 있으므로,
풀다운 시트에 추가 항목이 있을 때 그것도 대상이 되는 범용적인 쓰기 방법으로 하고 있습니다.
만약 고정으로 좋다고 하는 것이라면, 이쪽이 추천입니다.
시트 API를 두드리지 않는 만큼 움직임이 빨라집니다.
코드 2
function onEdit(e) {
// リストと一致しなかったら終了
const value = e.value;
const list = ['あ行', 'か行', 'さ行', 'た行', 'な行', 'は行', 'ま行', 'や行以降'];
if (!list.includes(value)) return;
const range = e.range;
const sht = range.getSheet();
// シート名が違ったら終了
if(sht.getName() !== 'data') return;
const row = range.getRow();
const col = range.getColumn() + 1; //入力箇所からズラす列数
const obj = {
'あ行': ['あ', 'い', 'う', 'え', 'お', ],
'か行': ['か', 'き', 'く', 'け', 'こ', ],
'さ行': ['さ', 'し', 'す', 'せ', 'そ', ],
'た行': ['た', 'ち', 'つ', 'て', 'と', ],
'な行': ['な', 'に', 'ぬ', 'ね', 'の', ],
'は行': ['は', 'ひ', 'ふ', 'へ', 'ほ', ],
'ま行': ['ま', 'み', 'む', 'め', 'も', ],
'や行以降': ['や', 'ゆ', 'よ', 'わ', 'を', 'ん', ],
}
// rule作成
const rule = SpreadsheetApp.newDataValidation();
rule.requireValueInList(obj[value]);
sht.getRange(row, col).setDataValidation(rule);
}
차이는 rurle
requireValueInRange
또는 requireValueInList
입니다.보충
스프레드시트 입력 규칙만으로 구현할 수 있지만,
행수가 많아지면 무거워져 운용적으로 NG였습니다.
GAS로 다르면 바로 처리를 멈추는 방법이 실용적이었습니다.
범위를 지정하는 경우 열의 0 열 앞에서만 움직이거나 설정을 추가해도
좋을까라고 생각하면서, 풀다운의 내용을 오기입하는 것도 적을까라고도 생각하고 있습니다.
Reference
이 문제에 관하여(【GAS】풀다운의 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/plumfield56/items/06ff6d8a0150ec0cd6d8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【GAS】풀다운의 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/plumfield56/items/06ff6d8a0150ec0cd6d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)