google spreadsheet v4の構文に関するドキュメントが見つかりませんでしたので、Google APPスクリプトを使用して解決しました。
まず、私はシートを得る:日付の後Iサイクル
と配列にこれを記録します。
for (var S in Sheet) {
var A = Sheet[S].getName();
var data = Sheet[S].getRange("D:D").getValues();
var start = M + '/' + 1 + '/' + Y;
var sdate = new Date(start);
var step = [];
var lastdate = "";
for (var i in data) {
var dateval = data[i][0];
var dchk = new Date(dateval);
if (!isNaN(dchk.valueOf())) {
if (lastdate === "") {
if (dchk.getMonth() === sdate.getMonth()) {
lastdate = dchk;
start = i;
var MM = (dchk.getMonth() + 1);
var DD = dchk.getDate();
var YY = dchk.getFullYear();
var arrdate = MM + '/' + DD + '/' + YY;
var j = parseInt(i) + 1;
step.push([j, arrdate]);
}
} else {
if (dchk.toString() !== lastdate.toString()) {
lastdate = dchk;
var stplng = step.length - 1;
if (stplng >= 0) {
step[step.length - 1][2] = (i);
}
var MM = (dchk.getMonth() + 1);
var DD = dchk.getDate();
var YY = dchk.getFullYear();
var arrdate = MM + '/' + DD + '/' + YY;
var j = parseInt(i) + 1;
step.push([j, arrdate]);
start = i;
}
}
}
}
その後、すべて私は行の値を取得した日付と一致するものそれは私が必要とするものです。 (私の質問で述べたように、私は、ここでは、文字列のためではなくgetBackgroundColorよりも「でgetValues」、検索):
var count = [];
var count2 = [];
for (var r in step) {
var newrange = "F" + step[r][0] + ":F" + ((step[r][2] !== undefined) ? step[r][2] : "");
var data2 = Sheet[S].getRange(newrange.toString()).getValues();
for (var i in data2) {
if (data2[i][0].indexOf("AN EXAMPLE VALUE") !== -1) {
if (count[r] === undefined) {
count[r] = [];
count[r].push(step[r][1]);
count[r].push('1');
count[r].push(i);
} else {
count[r].push(i);
}
}
if (data2[i][0].indexOf("AN EXAMPLE VALUE 2") !== -1 || data2[i][0].indexOf("AN EXAMPLE VALUE 3") !== -1) {
if (count2[r] === undefined) {
count2[r] = [];
count2[r].push(step[r][1]);
count2[r].push('2');
count2[r].push(i);
} else {
count2[r].push(i);
}
}
}
}
最終私は(私はこれが同じオリジナルのスプレッドシート上に置くことができたとし、これらの値を新しいスプレッドシートのシートを設定しました、または多分AJAX呼び出し、Ajaxは
for (var c in count) {
var B = count[c][0];
var C = count[c][1];
count[c].splice(0, 2);
var D = count[c].length;
if (D > 0) {
var srange = "A" + ctrak + ":D" + ctrak;
srange = srange.toString();
var valuestrak = [[C, A, D, B]];
SheetTr.getRange(srange).setValues(valuestrak);
ctrak++;
}
}
for (var c in count2) {
var B = count2[c][0];
var C = count2[c][1];
count2[c].splice(0, 2);
var D = count2[c].length;
if (D > 0) {
var srange = "E" + ctrak2 + ":H" + ctrak2;
srange = srange.toString();
var valuestrak = [[C, A, D, B]];
SheetTr.getRange(srange).setValues(valuestrak);
ctrak2++;
}
}
は、最後に私はそれを設定範囲使用して私のサーバーから情報を引き出す)スクリプトコンソールを介して動作するかどうかわからない:
$KEY_FILE_LOCATION = 'client_secret.json';
$client = new Google_Client();
$client->setApplicationName("xxxx");
$client->setAuthConfig($KEY_FILE_LOCATION);
$user_to_impersonate = '[email protected]';
$client->setSubject($user_to_impersonate);
$client->useApplicationDefaultCredentials();
$client->setScopes(['https://www.googleapis.com/auth/spreadsheets']);
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'NEWXXXXXXSPREADSHEETXXXXXID';
$df = date('F');
echo $df . PHP_EOL;
$range = $df . '!A:D';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$vals = $response->getValues();
$values = [];
if (!empty($vals)) {
if (is_array($vals)) {
$values = $vals;
} else {
array_push($values, $vals);
}
}
を