私はスクリプト作成の初心者で、現在Spreadsheetで指定された数値に基づいて電子メールを送信する自動電子メール送信システムを完成しようとしています。指定された送信日)。Googleスクリプト:スプレッドシートからの列と行のクロスマッチング
スプレッドシートから数値(左の桁)を参照することで、列の保持数と指定した数値とを一致させることで列を指定することができました。 (この場合、「7」であった)。
その後、最初に指定した列番号から先に指定した列から行番号またはデータ番号を取得し、列内の行を調べて目的のデータを見つけるために "for"を使用します。私はそれを動作するように管理することができますが、それは超スロー処理
(この場合は「1」)... は、私はすでにしばらくのためのソリューションを探しているが、方法を考え出すことができませんでした。
解決策のアイデアを共有していただければ大変感謝しています。 私が試したスクリプトは以下の通りです。スタート使用CaldatRange.getValuesとして
function AutoSend() {
// Get the spreadsheet
var book = SpreadsheetApp.getActiveSpreadsheet();
// Get cal
var Calsheet = book.getSheetByName("cal");
//=========================================================//
// Get data range that contains data
var CaldatRange = Calsheet.getDataRange();
//=========================================================//
// Get the row number of Cal to process
var CalnumRows = CaldatRange.getNumRows();
// Get the column number of Cal to process
var CalnumCols = CaldatRange.getNumColumns();
//=========================================================//
// Get the number of column to start to process
var Cstart = Calsheet.getRange(6, 5).getValue();
//=========================================================//
var coldata = [];
var rowdata = [];
for (var j = Cstart;j <= CalnumCols;j++){
var colnumfind = Calsheet.getRange(6, j).getColumn();
var status = Calsheet.getRange(3, j).getValue();
var dayLeft = Calsheet.getRange(4, j).getValue();
var Sdate = Calsheet.getRange(5, j).getValue();
if(dayLeft == "7" && status == "未送信")
{
Browser.msgBox("確認",colnumfind, Browser.Buttons.OK);
coldata = colnumfind;
for (var i = 6; i <= CalnumRows; i++)
{
var sendOK = Calsheet.getRange(i,coldata).getValue();
var rownumfind = Calsheet.getRange(i, coldata).getRow();
if(sendOK == "1")
{
rowdata = rownumfind;
var email = Calsheet.getRange(rowdata,3).getValue();
Browser.msgBox("確認","found it : Row " + rowdata +", Column "+ coldata + " " + email, Browser.Buttons.OK);
//PUT SEND EMAIL FUNCTION
}
}
Calsheet.getRange(3,coldata).setValue("送信済");
}
}
}
明確にするには、C3の中にある列を定義します。あなたは、列がいくつの行を見つけ出して何かを抽出したいのですか?現在の設定では、getValueをたくさん呼び出しています。あなたの究極の目標は何ですか?私はこれがより簡単に達成できると感じています。 –
ご意見ありがとうございます。 究極の目標は、Gmailを使って自動メーリングを作成することです。 頻繁にイベントを開くので、Googleフォームを使用してアプリケーションを収集し、スプレッドシートに保存することに決めました。 –
そして、私たちは7日前にそれらを思い出させるために自動的に電子メールを送信します。 私が問題を抱えているコーディングは、何日残ったかに基づくこのアラームシステムです。 何らかの理由で、私が持っていた問題を解決して、今度は2番目の "for"を読むことに成功しましたが、この単純な方法を処理するのに時間がかかります... ここに更新されたスクリプトを投稿できますか? –