Skip to content

Instantly share code, notes, and snippets.

@tetsutalow tetsutalow/コード.gs
Last active Dec 11, 2018

Embed
What would you like to do?
投票集計のためのGoogle Apps Script
function codecheck(e) {
var range = e.range; // 書き換えられた部分
var votesheet = e.source.getActiveSheet(); // 書き換え部分を含むシート=集計用シート
var codesheet = SpreadsheetApp.openById('1mppQxjXL6MUqmDuTONBe8nTNIEWdMXeup4wVHE87_ZI').getSheetByName('codes'); // 投票用コード一覧 ***スプレッドシートIDとシート名は書き換えてください*** 
  // スプレッドシートID  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     シート名 ̄ ̄ ̄ ̄   A列に投票用コード C列は消費済み印
var key=e.namedValues['投票用コードを入力してください']; // 入力された投票用コード
var hit_row = get_row(key, 'A', codesheet); // 投票用コード一覧から入力されたコードが見つかれば行番号 見つからなければ0
var voteerror_range = votesheet.getRange(range.getRow(),4); //書き換えられた部分の4列目=D列のセルを指定
if (hit_row == 0) { // 投票用コード一覧に見つからず
voteerror_range.setValue('E'); // コード不正を記録
} else { // 投票用コードが見つかった
var code_range = codesheet.getRange(hit_row, 3); // 該当行の3列目=C列のセルを指定
voteerror_range.setValue(code_range.getValue()); // そのセルの値を投票集計用シートの該当行にコピー。もし使用済みならXが、使用前なら空白がコピーされる。
code_range.setValue('X'); // 当該投票用コードに使用済み印をつける
}
}
// 以下の関数は http://www.pre-practice.net/2018/01/blog-post_21.html から拝借
function get_row(key, col, sh){
var array = get_array(sh, col);
for (var i = 0; i < array.length; i++) {
if(key == array[i]) {
return(i+1);
}
}
return 0;
}
function get_array(sh, col) {
var last_row = sh.getLastRow();
var range = sh.getRange(col + "1:" + col + last_row);
var values = range.getValues();
var array = [];
for(var i = 0; i < values.length; i++) {
array.push(values[i][0]);
}
return array;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.