Google Cloud Storage - Как ограничить доступ к определенной корзине

  • Если вы хотите итерации от последней строки к первой, вам нужно будет добавить Step -1.
  • emptyRows() необходимо подбирать, чтобы соответствовать данным, используя ReDim
  • .Column = 16384 следует изменить на .Column = sheet.Columns.Count.
  • Я предпочитаю If WorksheetFunction.CountA(sheet.Rows(i)) = 0 Then
  • Cells должен быть квалифицирован для sheet: sheet.Cells(i, 1)
  • Рефакторированный код

    Function FindAllEmptyRows(sheet As Worksheet) As Variant
        Dim emptyRows() As Variant
        Dim i As Long, rowNumber As Long
        Dim rowCounter As Integer
    
        rowNumber = sheet.UsedRange.Rows.Count
        For i = rowNumber To 1 Step -1
            If sheet.Cells(i, 1).End(xlToRight).Column = sheet.Columns.Count And Cells(i, 1) = "" Then
                If rowCounter = 0 Then
                    ReDim emptyRows(0)
                Else
                    ReDim Preserve emptyRows(rowCounter)
                End If
    
                emptyRows(rowCounter) = i
                rowCounter = rowCounter + 1
            End If
        Next
    
        FindAllEmptyRows = emptyRows
    End Function
    

    SpecialCells

    Range.SpecialCells() можно использовать для разделения Range на области ячеек, которые соответствуют определенным критериям.

    MSDN - Range.SpecialCells Method (Excel)

    Возвращает объект Range, который представляет все ячейки, соответствующие указанному типу и значению

    OZ Grid

    Одним из наиболее полезных методов в Excel (по моему опыту) является метод SpecialCells. При использовании он возвращает объект диапазона, который представляет только те типы ячеек, которые мы указываем. Например, можно использовать метод SpecialCells для возврата объекта Range, который содержит только формулы. Фактически, мы можем, если хотим, даже сузить его дальше, чтобы наш объект Range (содержащий только формулы) возвращал только формулы с ошибками.

    Изучение вывода этого кода должно дайте вам хорошие идеи о том, как использовать SpecialCells.

    Sub SpecialFoo()
        Dim rArea As Range, rBlanks As Range, rFormulas As Range, rConstants As Range, rUnion As Range
        Dim sheet As Worksheet
    
        Set sheet = ActiveSheet
        On Error Resume Next
        Set rBlanks = sheet.UsedRange.SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0
    
        If Not rBlanks Is Nothing Then
            For Each rArea In rBlanks.Areas
                Debug.Print "rBlanks Areas: "; rArea.Address
            Next
        End If
    
        On Error Resume Next
        Set rFormulas = sheet.UsedRange.SpecialCells(xlCellTypeFormulas)
        On Error GoTo 0
    
        If Not rFormulas Is Nothing Then
            For Each rArea In rFormulas.Areas
                Debug.Print "rFormulas Areas: "; rArea.Address
            Next
        End If
    
        On Error Resume Next
        Set rConstants = sheet.UsedRange.SpecialCells(xlCellTypeConstants)
        On Error GoTo 0
    
        If Not rConstants Is Nothing Then
            For Each rArea In rConstants.Areas
                Debug.Print "rConstants Areas: "; rArea.Address
            Next
        End If
    
        If Not rFormulas Is Nothing And Not rConstants Is Nothing Then
            Set rFormulas = Union(rConstants, rFormulas)
            For Each rArea In rFormulas.Areas
                Debug.Print "rUnion Areas: "; rArea.Address
            Next
        End If
    
    End Sub
    
0
задан Nikratio 20 January 2019 в 14:19
поделиться

2 ответа

Вы можете создать учетную запись службы, доступ к которой ограничен требуемым сегментом. https://cloud.google.com/iam/docs/understanding-service-accounts

0
ответ дан Mohit Gupta 20 January 2019 в 14:19
поделиться

Используйте списки доступа Bucket и назначьте адрес электронной почты пользователя в корзину. Адрес электронной почты пользователя должен быть частью учетных записей Google или G Suite, с которыми пользователь входит (в учетные записи Google).

Следующий пример gsutil предоставит john.doe@example.com разрешение write на ведро example-bucket:

gsutil acl ch -u john.doe@example.com:WRITE gs://example-bucket

Документация:

GSUTIL - ACL ]

0
ответ дан John Hanley 20 January 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: