1

私は、以下のインストール:GoogleスプレッドシートApi V4 - >背景を取得しますか? PHP

私は何をしたいのか

https://github.com/google/google-api-php-client-services/tree/master/src/Google/Service/Sheets

を使用している

https://github.com/google/google-api-php-client-services

は次のとおりです。

$cellFormat = new Google_Service_Sheets_CellFormat(); 
$color = $cellFormat->getBackgroundColor(); 

しかし、私は把握することはできませんスプレッドシートを割り当てる方法、または範囲を選択する方法。そして、もちろん、応答を返します。

ご協力いただければ幸いです!

答えて

0

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); 
    } 
} 
関連する問題