Last active
December 11, 2018 05:07
-
-
Save tetsutalow/4933763b18a89e04fbaec7d0663896ab to your computer and use it in GitHub Desktop.
投票集計のためのGoogle Apps Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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