0
スプレッドシートで検索する必要があります。最初の列は@部分のないメールのリストです。例えばGoogle Apps Scriptのバイナリ検索アルゴリズム
aadb.asdf
asdfsd.asdf
asdfsad.asdfsdf
asdfsdf.asdfsdf
以下
は、バイナリサーチのために私のコードです:
function testSubmit() {
var email = "aadb.asdf";
var s = SpreadsheetApp.openById("spreadsheetID");
var sheet = s.getSheets()[0];
var emailColumn = sheet.getRange(1,1, sheet.getLastRow()).getValues();
var l1 = 0;
var h1 = Number(sheet.getLastRow()) - 1;
while(h1 >= l1) {
var middle = parseInt((l1 + h1)/2);
var item = emailColumn[middle][0].valueOf();
Logger.log("Binary -> middle : " + middle + " data : " + emailColumn[middle][0]);
if(item == email) {
}
if(item.charAt(0) < email.charAt(0)) {
l1 = middle + 1;
}
if(item.charAt(0) > email.charAt(0)) {
h1 = middle - 1;
}
}
}
しかし、私のスクリプトが動けなくなると、メッセージは以下のスクリーンショットで提供します。
私は線形検索を実行したときしかし、それが正常に動作します。スクリプトに問題はありますか?あなたのwhile文で
for (var row in emailColumn) {
for (var col in emailColumn[row]) {
if(email == emailColumn[row][col]) {
Logger.log("row : " + row + " col : " + col + " data : " + emailColumn[row][col]);
}
}
}
表示されているメッセージはエラーメッセージではありません。どれくらい待ちますか?あなたはスクリプト実行記録を見直しますか? (https://developers.google.com/apps-script/troubleshootingを参照)。 –
添付されている画像はエラーメッセージではありません。 @ルベンは正しいです。それ以外のメッセージはありますか?期待した結果は何ですか?今のところ、[documentation](https://developers.google.com/apps-script/troubleshooting#debugging)を読んでみてください。それはデバッグを含むすべてを議論した。 –
私はそれが誤りであるとは言いませんでしたが、バイナリ検索は線形よりも時間がかかりますので、起こってはいけません。しかし、私のスクリプトでは、バイナリがいくつかの点で立ち往生しているように見える間に、線形検索は迅速です。私はエラーのために私のスクリプトを再確認しますが、私は何も表示されません –